Linuxを実務で扱っているものの、
・シェルで何ができるかわからない…。
・シェルの実際の操作方法が知りたい…。
という方も多いのではないでしょうか。そこでこの記事では、
・シェルの機能や種類
・シェルの基本コマンド、スクリプトの作成方法
について解説します。
Linux初心者の方でも、この記事を読めばシェルの包括的な知識や基本的な使い方がわかります。
Udemyの講座を併用すると、シェルの実装についてのより具体的なスキルを身につけることができるでしょう。
この記事で解説するスクリプトは、下記の環境で作成・実行しています。
OS:Microsoft Windows 11 Home 開発に使用したツール:Windows Subsystem for Linux 2(Ubuntu)
Linuxのシェル(Shell)とは?
シェル(Shell)とは、Linuxで管理的な操作をおこなうためのプログラムです。オペレーターが操作内容を「コマンド」という形で入力すると、シェルを通じてLinuxの中核的なプログラムであるカーネルに送信され、実行されます。
LinuxなどのサーバーOSの操作には、シェルのようなテキストベースのプログラムがよく使われます。
シェルの仕組みについて詳しくは、「シェル(Shell)とは?仕組みや種類・シェルスクリプトの実行方法まで解説!」をご覧ください。
シェルスクリプトはテキストファイル
シェルスクリプトとは、複数のコマンドをまとめたテキストファイルのことです。シェルスクリプトに条件分岐やループなどを含めてコマンドを記述することで、複雑な処理を自動化できます。
シェルスクリプトの基本的な作成方法は次の通りです。
1 2 |
#!/usr/bin/bash echo Hello World |
1行目では「bash」というシェルで実行することを指定しています。2行目は、「echo」というコマンドで「Hello World」という文字列を標準出力させる内容です。
今回は、これらのシェルスクリプトを記述したテキストファイルを「testscript.sh」という名称で保存しました。「bash testscript.sh」のコマンドでファイルを実行すると、コンソール上に「Hello World」と表示されます。
シェルスクリプトの作り方や実行方法について詳しくは、「【入門者向け】シェルスクリプトの作成・実行方法をわかりやすく解説!」をご覧ください。
\文字より動画で学びたいあなたへ/
Udemyで講座を探す >Linuxのシェルの機能と種類
Linuxで使用できるシェルには、bashやsh、zshなどいくつかの種類があります。ここでは、主なシェルの種類と機能の特徴について解説します。
bash:コマンド履歴など
bashは、多くのLinuxディストリビューションに標準搭載されているシェルです。shというシェルの機能を強化したものとして開発されました。スクリプトを上から順番に読み込み、コマンドや制御文、変数などを解釈することがbashの特徴です。
Windowsでは、コントロールパネルから「Windowsの機能の有効化または無効化」のメニューを開き、「Linux用Windowsサブシステム」にチェックを入れて「OK」をクリックすることでbashを利用できます。
bashからは、入力したコマンドの履歴を表示する操作などが行えます。履歴は「history」のコマンドで表示することが可能です。
sh:オプションなど
shは、LinuxのもとになったOSから標準搭載されていたシェルです。様々なシェルの基となったシェルで、現在も標準のシェルとしてshを搭載しているOSがあります。ただし、shで実行できるのは基本的な操作のみです。
例えば、「ps」というコマンドを入力すると、実行中のプロセスが表示されます。
zsh:全ての機能をほぼ網羅
zshは、macOSのCatalina以降に標準搭載されているシェルです。複数のユーザー間での履歴の共有や、表示や操作のカスタマイズなど幅広い機能が搭載されています。ただし、高機能なため使いこなすまでには一定の学習が必要です。
zshをインストールするためのコマンドは、Linuxディストリビューションの種類によって異なります。
RHEL系では「yum」、Debian系なら「apt」のコマンドでzshのインストールが可能です。macOSを利用している場合は、パッケージ管理システムの「Homebrew」からzshをインストールできます。
zshの「ls」は、カレントディレクトリのファイルを一覧表示するためのコマンドです。「ls -l」のオプションを付けて実行すると、ファイルの詳細情報が一覧表示されます。
csh:素早い保存と呼び出しなど
csh(Cシェル)は、対話的に利用する際に便利な機能を備えたシェルです。例えば、過去に入力したコマンドの呼び出しや、ファイル名の自動補完などを利用すると、効率性が高まります。
制御構造の文法がC言語に似ている点も、cshの特徴です。C言語のプログラミングスキルがある場合、cshのスクリプトも簡単に書ける可能性があります。
cshの「vi」は、ファイルを作成し、テキストエディタで編集するコマンドです。下記の例では、「test_csh.sh」というファイルを作成しています。
コマンドを実行すると、テキストエディタのviが起動し、編集モードに移行します。
テキストファイルの内容を入力後、Escキーでコマンドモードに戻り、「:wq」コマンドでviを終了することでファイルの保存が可能です。
操作した通りの内容でファイルが作成されました。
ksh:対話式コマンドの実行など
「ksh」はKornシェルと呼ばれるシェルを起動するためのコマンドです。Kornシェルは「bsh」コマンドで起動されるBourneシェルとの互換性があります。
また、履歴の表示や補完入力などCシェルの機能も利用することが可能です。kshはbashやzshほど多くはないものの、LinuxやmacOSなどのUNIX系OSで利用できます。
「ksh」コマンドを実行すると、対話形式でシェルスクリプトを入力できます。下記の例では、「ls」を入力し、ファイルの一覧を表示しました。
tcsh:補完機能など
tcsh(Tenex Cシェル)は、Cシェルをより使いやすく拡張したシェルです。コマンド入力の途中で入力位置を移動させ、入力済みの文字列に対して削除や新たな文字の挿入などの操作ができます。
また、補完機能を使うと途中まで入力したファイル名やディレクトリ名を自動入力できるため効率的です。タイプミスも防げるため、tcshを利用する際は補完機能を積極的に活用しましょう。
補完機能は、コマンドやファイル名などを途中まで入力した状態で「Tab」キーを押すと利用できます。下記は、ファイルの中身を表示する「cat」というコマンドで、対象のファイル名を途中まで入力した状態です。
この状態で「Tab」キーを入力すると、「sampletext.txt」というファイル名が自動で補完されました。
コマンドを実行すると、「sampletext.txt」に記入されていた中身が表示されます。
Linuxのシェルの書き方
ここでは、bashを用いたLinuxのシェルスクリプトの書き方について解説します。ファイルの作成や条件分岐、繰り返し処理などの操作を記述する方法は次の通りです。
ファイル作成
まずは、シェルスクリプトを記述するためのファイルを作成しましょう。任意のディレクトリにテキストファイルを新規作成し、「.sh」という拡張子で保存します。今回は、「samplescript.sh」という名称でファイルを作成しました。
bashのスクリプトであることを指定するため、一行目には下記のコードを入力します.
1 |
#!/usr/bin/bash |
2行目以降にコードを追加し、シェルスクリプトを作成していきましょう。
条件分岐
条件分岐では、次のようなコマンドを利用します。
1 2 3 4 5 6 7 |
if [ 条件式 ] then 条件式の結果が真だった場合の指示 else 条件式の結果が偽だった場合の指示 fi |
例えば、2つの文字列が一致しているかどうかによる条件分岐のスクリプト例は下記の通りです。
1 2 3 4 5 6 7 8 9 10 |
#!/usr/bin/bash string1="tarou" string2="jirou" if [ "$string1" == "$string2" ] then echo "同じテキストです" else echo "異なるテキストです" fi |
このコードでは、2つの変数「string1」と「string2」を用意し、中身が一致していれば「同じテキストです」、違っていれば「異なるテキストです」と表示されます。
スクリプトの実行結果は次の通りです。
繰り返し処理
複数回、処理を繰り返すためのコマンドは次の通りです。
1 2 3 4 5 |
for 変数名 in 複数の値 do 処理内容 done |
例えば、0~3の値を順番に表示するスクリプトは次のように記述します。
1 2 3 4 5 6 |
#!/usr/bin/bash for NUM in 0 1 2 3 do echo $NUM done |
スクリプトの実行結果は次の通りです。
関数の作成
シェルスクリプトでは、次のように関数を作って呼び出すことも可能です。
1 2 3 4 5 |
関数名() { 関数の内容 引数 } 関数名 引数 |
例えば、下記のスクリプトでは1つの引数を「echo」コマンドで表示する「SampleFunc()」という関数が作成されます。
1 2 3 4 5 6 |
#!/bin/bash SampleFunc() { echo "$1" } SampleFunc text |
実行結果は次の通りです。
シェルスクリプトの書き方を理解して活用しよう
LinuxなどのOSは、シェルを通じて管理的な操作を行うことが可能です。シェルに対する指示内容は、シェルスクリプトと呼ばれるテキストファイルを作成することで指定できます。
シェルの種類やシェルスクリプトの書き方を理解して、Linuxを効率的に操作しましょう!
Pythonでシェルを実装する具体的な方法を学びたい方には、以下の講座がおすすめです。
自作シェルで学ぶLinuxシステムプログラミング―Pythonで150行の「シェル」を実装してLinuxのしくみを学ぼう
コマンドを実行する「シェル」を自作しながら、Linux のしくみや OS に近い領域のプログラミングを学ぼう!「シェルって何?コマンドの実行って何?標準入出力って何?ターミナルって何?」といった疑問をシェルの実装レベルで解消しよう!
\無料でプレビューをチェック!/
講座を見てみる評価:★★★★★
コメント:ハンズオンにより、シェルがやっていることをイメージできました。消化しきれない内容がありますので、何度か見直してみようと思います。Linuxの設計思想の一端にも触れることができ、おもしろかったです。
評価:★★★★★
コメント:解説が初心者にもたいへん分かりやすくて良かったです。 講義を一通り受講すればシェルを実装できて、非常に達成感がありました。
シェルを活用して効率的にLinuxを操作しましょう。
最新情報・キャンペーン情報発信中