LinuxやUnixで開発を行う場合、シェルについて理解しておくことが大切です。この記事ではシェルの仕組みや活用場面、シェルの種類、シェルスクリプトの実行方法などを紹介します。シェルの基本知識を押さえたい方はぜひ参考にしてください。
目次
シェル(Shell)とは?
シェルとは、ユーザーとコンピュータのOS(オペレーティングシステム)の橋渡しをするプログラムです。より具体的には、シェルはOSの中核である「カーネル」とやり取りしています。
シェルを間に挟んでやり取りすることで、ユーザーはカーネルを間接的に操作することが可能です。シェルを利用すると、OSを移行しやすくなる、シェル上でエラーが発生した際にOSへの影響を最小限に止められるなどのメリットがあります。
シェルの仕組み
シェルを通じて、ユーザーがカーネルとやり取りする流れは次の通りです。
まず、ユーザーがコマンドを入力し、その内容をシェルが受け取ります。シェルはカーネルが解釈できるような形でコマンドを変換し、カーネルに指令を送ります。カーネルは、シェルから受け取った指令をもとに、その内容を実行します。そして、処理結果をシェルに返します。カーネルから受け取った処理結果をシェルが画面上に出力すると、ユーザーが処理結果を確認できます。
シェルの活用場面
シェルの主な活用場面は、OSの操作を自動化したり、定期的に実行したりすることです。例えば、決まった曜日や時間帯などにシェルの操作を実行すると、OSを使ったルーティン作業を忘れずに行えます。また、OSに保存されたファイルの中から、特定の条件を満たすデータを抽出することも可能です。
これらの他、OSにインストールされた他のソフトウェアや、プログラミング言語と組み合わせて活用する場合もあります。
シェルとシェルスクリプトの違い
シェルとシェルスクリプトは混同されやすいものの、それぞれ別のものを指す用語です。シェルとは、ユーザーが入力したコマンドを解読し、OSとユーザーの橋渡しを行うプログラムを指します。一方、シェルスクリプトとは、シェルが解読できる命令をまとめたファイルです。
シェルスクリプトはPythonなどと同じ、簡単に記述できるスクリプト言語の一種に分類されます。
シェルスクリプトで作業の自動化ができる
シェルスクリプトは、シェルの動作を指定する指示書のようなものです。シェルスクリプトで記述したコマンドを組み合わせると、シェルを通じた様々な作業を自動化できます。また、シェルスクリプトを使うと、データの抽出などの作業の効率化が可能です。Pythonなど、他のプログラミング言語で記述されたプログラムと組み合わせることで、活用の幅が広がります。
シェルの種類(sh/bash/zsh)
シェルには複数の種類があり、副次的な機能やコマンド入力のしやすさなどに違いがあります。代表的なシェルは次の3種類です。
sh
shは、UNIX系のOSで使用できるシェルの中で最も古くから存在します。AT&Tベル研究所のスティーブン・ボーン氏によって開発されました。UNIX以外の様々なOSでも利用できます。比較的新しい他のシェルと比べると、入力補助機能などはやや物足りなく感じられることもあり、最近では、他のシェルが利用されることが一般的です。
bash
bashは、Linux系OSにおける標準シェルとして広く利用されています。mac OSでもbashの利用が可能です。bashはshの機能を基にして開発されました。shが開発者の名前にちなんで「Bourneシェル」と呼ばれることに対して、それを生まれ変わらせたシェルという意味の「Bourne Again Shell」の略称で、bashと名付けられています。
zsh
zshは、shやbashなどの良い面を取り入れた高機能なシェルです。また、zshならではの独自機能も追加され、カスタマイズ性が高くなっています。基本的に、bashに搭載されている機能は、zshにも内包されているため、zshでも使うことが可能です。ただし、zshは多機能であるためプログラムが重たくなる傾向があります。
シェルを使ってみよう!
ここでは、シェルを使う具体的な方法について解説します。シェルスクリプトを作成し、実行するまでの流れは次の通りです。
シェルスクリプトの作成
まずは、シェルスクリプトのコードが記述されたファイルを作成しましょう。一般的に、シェルスクリプトの作成には「emacs」や「vi」などのエディターが使用されます。シェルスクリプトの中身は文字データのため、上記以外のテキストエディタで作成しても構いません。ただし、ファイルを保存する際の拡張子は「.sh」など、シェルスクリプトとして認識されるものを選んでください。
シェルスクリプトの簡単なプログラム例は次の通りです。
#!/bin/bash echo "Hello World" echo $((10 + 5)) echo $((10 - 5)) echo $((10 * 5)) echo $((10 / 5))
1行目にある「#!/bin/bash」は、bashのために書かれたコードであることを表しています。bash以外のシェルを使用する場合は、必要に応じて1行目の内容を変更してください。
2行目は「Hello World」という文字列を表示するスクリプトです。3行目以降は、簡単な数値計算を行う内容となっています。上記のようなファイルを作成し、シェルスクリプトのファイルとして保存しましょう。
シェルスクリプトの実行
次に、作成したシェルスクリプトを実行します。まずは、ターミナルやコマンドプロンプトなどで、以下のコマンドを実行しましょう。
ls -la シェルスクリプトのファイル名
ShellScript例えば、先ほど作成したシェルスクリプトのファイル名が「test.sh」の場合は「ls -la test.sh」と入力してください。このコマンドを実行すると、対象ファイルに付与されている権限が以下のような形で表示されます。
rwxr-xr-x
ShellScript「r」は読み出しの許可、「w」は書き込みの許可、「x」は実行の許可を表し、「-」は対象の権限が与えられていません。
上記の例の場合、最初の「rwx」で所有者に全ての権限が許可されている状態です。真ん中の「r-x」はグループに読み出しと実行の権限、末尾の「r-x」は、他のユーザーに読み出しと実行の権限が与えられていることを表します。
シェルスクリプトのファイルを実行するには、対象ファイルの実行権限が必要です。権限は、次のようなコマンドで設定できます。
chmod 755 ファイル名
ShellScript最初の数字がユーザーの権限、真ん中の数字がグループの権限、最後の数字が他のユーザーの権限を指定する値です。数字はそれぞれ、以下のような意味を持ちます。
4 | 読み出しの許可 |
2 | 書き込みの許可 |
1 | 実行の許可 |
0 | 許可無し |
上記の数字の合計で、権限の付与が可能です。ユーザーに読み出し・書き込み・実行のすべてを許可したい場合は、4+2+1で7を割り当てます。グループと他のユーザーには4+1で5、つまり読み込みと実行の許可を与えています。「chmod 755 test.sh」と入力すると、先ほど作成したシェルスクリプトのファイルに実行権限を付与できます。
最後に、以下のコマンドを入力すると、対象のシェルスクリプトの実行が可能です。
bash ファイル名
ShellScript「bash test.sh」と入力すると、シェルスクリプトで指定した文字列や計算結果が表示されます。
Hello World 15 5 50 2
ShellScriptこのような流れで、作成したシェルスクリプトを実行しましょう。シェルスクリプトの内容を書き換えれば、より複雑な処理を指定することも可能です。
シェルはOSのカーネルとユーザーの橋渡しをするプログラムで、シェルスクリプトによって操作できます。シェルを活用するとOSの操作を自動化したり、データ抽出を効率化したりできるため便利です。シェルスクリプトの作成方法を覚えて、ぜひシェルの機能を使いこなしましょう。