Linuxのシェル(Shell)とは?機能や種類を網羅的に解説

Linuxを実務で扱っているものの、

・シェルで何ができるかわからない…。
・シェルの実際の操作方法が知りたい…。

という方も多いのではないでしょうか。そこでこの記事では、

・シェルの機能や種類
・シェルの基本コマンド、スクリプトの作成方法

について解説します。

Linux初心者の方でも、この記事を読めばシェルの包括的な知識や基本的な使い方がわかります。

Udemyの講座を併用すると、シェルの実装についてのより具体的なスキルを身につけることができるでしょう。

この記事で解説するスクリプトは、下記の環境で作成・実行しています。

OS:Microsoft Windows 11 Home 開発に使用したツール:Windows Subsystem for Linux 2(Ubuntu)

Linuxのシェル(Shell)とは?

シェル(Shell)とは、Linuxで管理的な操作をおこなうためのプログラムです。オペレーターが操作内容を「コマンド」という形で入力すると、シェルを通じてLinuxの中核的なプログラムであるカーネルに送信され、実行されます。

LinuxなどのサーバーOSの操作には、シェルのようなテキストベースのプログラムがよく使われます。

シェルの仕組みについて詳しくは、「シェル(Shell)とは?仕組みや種類・シェルスクリプトの実行方法まで解説!」をご覧ください。

シェルスクリプトはテキストファイル

シェルスクリプトとは、複数のコマンドをまとめたテキストファイルのことです。シェルスクリプトに条件分岐やループなどを含めてコマンドを記述することで、複雑な処理を自動化できます。

シェルスクリプトの基本的な作成方法は次の通りです。

1行目では「bash」というシェルで実行することを指定しています。2行目は、「echo」というコマンドで「Hello World」という文字列を標準出力させる内容です。

今回は、これらのシェルスクリプトを記述したテキストファイルを「testscript.sh」という名称で保存しました。「bash testscript.sh」のコマンドでファイルを実行すると、コンソール上に「Hello World」と表示されます。

「echo」コマンドで「Hello World」という文字列が標準出力する

シェルスクリプトの作り方や実行方法について詳しくは、「【入門者向け】シェルスクリプトの作成・実行方法をわかりやすく解説!」をご覧ください。

\文字より動画で学びたいあなたへ/

Udemyで講座を探す >

Linuxのシェルの機能と種類

Linuxで使用できるシェルには、bashやsh、zshなどいくつかの種類があります。ここでは、主なシェルの種類と機能の特徴について解説します。

bash:コマンド履歴など

bashは、多くのLinuxディストリビューションに標準搭載されているシェルです。shというシェルの機能を強化したものとして開発されました。スクリプトを上から順番に読み込み、コマンドや制御文、変数などを解釈することがbashの特徴です。

Windowsでは、コントロールパネルから「Windowsの機能の有効化または無効化」のメニューを開き、「Linux用Windowsサブシステム」にチェックを入れて「OK」をクリックすることでbashを利用できます。

bash解説:「Windowsの機能の有効化または無効化」のメニューを開く
bash解説:「Linux用Windowsサブシステム」にチェックを入れて「OK」

bashからは、入力したコマンドの履歴を表示する操作などが行えます。履歴は「history」のコマンドで表示することが可能です。

bash解説:履歴は「history」のコマンドで表示できる

sh:オプションなど

shは、LinuxのもとになったOSから標準搭載されていたシェルです。様々なシェルの基となったシェルで、現在も標準のシェルとしてshを搭載しているOSがあります。ただし、shで実行できるのは基本的な操作のみです。

例えば、「ps」というコマンドを入力すると、実行中のプロセスが表示されます。

sh解説:「ps」というコマンドを入力すると、実行中のプロセスが表示される

zsh:全ての機能をほぼ網羅

zshは、macOSのCatalina以降に標準搭載されているシェルです。複数のユーザー間での履歴の共有や、表示や操作のカスタマイズなど幅広い機能が搭載されています。ただし、高機能なため使いこなすまでには一定の学習が必要です。

zshをインストールするためのコマンドは、Linuxディストリビューションの種類によって異なります。

RHEL系では「yum」、Debian系なら「apt」のコマンドでzshのインストールが可能です。macOSを利用している場合は、パッケージ管理システムの「Homebrew」からzshをインストールできます。

zshの「ls」は、カレントディレクトリのファイルを一覧表示するためのコマンドです。「ls -l」のオプションを付けて実行すると、ファイルの詳細情報が一覧表示されます。

zsh解説:「ls -l」のオプションを付けて実行すると、ファイルの詳細情報が一覧表示される

csh:素早い保存と呼び出しなど

csh(Cシェル)は、対話的に利用する際に便利な機能を備えたシェルです。例えば、過去に入力したコマンドの呼び出しや、ファイル名の自動補完などを利用すると、効率性が高まります。

制御構造の文法がC言語に似ている点も、cshの特徴です。C言語のプログラミングスキルがある場合、cshのスクリプトも簡単に書ける可能性があります。

cshの「vi」は、ファイルを作成し、テキストエディタで編集するコマンドです。下記の例では、「test_csh.sh」というファイルを作成しています。

csh解説:ファイルを作成し、テキストエディタで編集できる「vi」コマンドを実行する画面

コマンドを実行すると、テキストエディタのviが起動し、編集モードに移行します。

テキストファイルの内容を入力後、Escキーでコマンドモードに戻り、「:wq」コマンドでviを終了することでファイルの保存が可能です。

csh:「:wq」コマンドでviを終了している画面

操作した通りの内容でファイルが作成されました。

csh:ファイルに保存された
csh:テキストエディタに表示される

ksh:対話式コマンドの実行など

「ksh」はKornシェルと呼ばれるシェルを起動するためのコマンドです。Kornシェルは「bsh」コマンドで起動されるBourneシェルとの互換性があります。

また、履歴の表示や補完入力などCシェルの機能も利用することが可能です。kshはbashやzshほど多くはないものの、LinuxやmacOSなどのUNIX系OSで利用できます。

「ksh」コマンドを実行すると、対話形式でシェルスクリプトを入力できます。下記の例では、「ls」を入力し、ファイルの一覧を表示しました。

ksh:「ls」を入力し、ファイルの一覧を表示した画面

tcsh:補完機能など

tcsh(Tenex Cシェル)は、Cシェルをより使いやすく拡張したシェルです。コマンド入力の途中で入力位置を移動させ、入力済みの文字列に対して削除や新たな文字の挿入などの操作ができます。

また、補完機能を使うと途中まで入力したファイル名やディレクトリ名を自動入力できるため効率的です。タイプミスも防げるため、tcshを利用する際は補完機能を積極的に活用しましょう。

補完機能は、コマンドやファイル名などを途中まで入力した状態で「Tab」キーを押すと利用できます。下記は、ファイルの中身を表示する「cat」というコマンドで、対象のファイル名を途中まで入力した状態です。

tcsh:「cat」コマンドで、対象のファイル名を途中まで入力した状態の画面

この状態で「Tab」キーを入力すると、「sampletext.txt」というファイル名が自動で補完されました。

tcsh:「Tab」キーを入力して補完した結果の画面

コマンドを実行すると、「sampletext.txt」に記入されていた中身が表示されます。

tcsh:補完した「sampletext.txt」を実行した画面

Linuxのシェルの書き方

ここでは、bashを用いたLinuxのシェルスクリプトの書き方について解説します。ファイルの作成や条件分岐、繰り返し処理などの操作を記述する方法は次の通りです。

ファイル作成

まずは、シェルスクリプトを記述するためのファイルを作成しましょう。任意のディレクトリにテキストファイルを新規作成し、「.sh」という拡張子で保存します。今回は、「samplescript.sh」という名称でファイルを作成しました。

Linuxのシェルの書き方:「samplescript.sh」という名称でファイルを作成した画面

bashのスクリプトであることを指定するため、一行目には下記のコードを入力します.

2行目以降にコードを追加し、シェルスクリプトを作成していきましょう。

条件分岐

条件分岐では、次のようなコマンドを利用します。

例えば、2つの文字列が一致しているかどうかによる条件分岐のスクリプト例は下記の通りです。

このコードでは、2つの変数「string1」と「string2」を用意し、中身が一致していれば「同じテキストです」、違っていれば「異なるテキストです」と表示されます。

スクリプトの実行結果は次の通りです。

Linuxのシェルの書き方(条件分岐):スクリプトの実行結果

繰り返し処理

複数回、処理を繰り返すためのコマンドは次の通りです。

例えば、0~3の値を順番に表示するスクリプトは次のように記述します。

スクリプトの実行結果は次の通りです。

Linuxのシェルの書き方(繰り返し処理):スクリプトの実行結果

関数の作成

シェルスクリプトでは、次のように関数を作って呼び出すことも可能です。

例えば、下記のスクリプトでは1つの引数を「echo」コマンドで表示する「SampleFunc()」という関数が作成されます。

実行結果は次の通りです。

Linuxのシェルの書き方(関数の作成):スクリプトの実行結果

シェルスクリプトの書き方を理解して活用しよう

LinuxなどのOSは、シェルを通じて管理的な操作を行うことが可能です。シェルに対する指示内容は、シェルスクリプトと呼ばれるテキストファイルを作成することで指定できます。

シェルの種類やシェルスクリプトの書き方を理解して、Linuxを効率的に操作しましょう!

Pythonでシェルを実装する具体的な方法を学びたい方には、以下の講座がおすすめです。

Udemyおすすめ講座

自作シェルで学ぶLinuxシステムプログラミング―Pythonで150行の「シェル」を実装してLinuxのしくみを学ぼう

自作シェルで学ぶLinuxシステムプログラミング―Pythonで150行の「シェル」を実装してLinuxのしくみを学ぼう

4.6(28 件の評価)

438 人の受験生

作成者: しま (大嶋勇樹)(ソフトウェアエンジニア)

コマンドを実行する「シェル」を自作しながら、Linux のしくみや OS に近い領域のプログラミングを学ぼう!「シェルって何?コマンドの実行って何?標準入出力って何?ターミナルって何?」といった疑問をシェルの実装レベルで解消しよう!

\無料でプレビューをチェック!/

講座を見てみる

評価:★★★★★
コメント:ハンズオンにより、シェルがやっていることをイメージできました。消化しきれない内容がありますので、何度か見直してみようと思います。Linuxの設計思想の一端にも触れることができ、おもしろかったです。

評価:★★★★★
コメント:解説が初心者にもたいへん分かりやすくて良かったです。 講義を一通り受講すればシェルを実装できて、非常に達成感がありました。

シェルを活用して効率的にLinuxを操作しましょう。