UNIXシェル
概要
Unixシェルとは、UNIX系のOS上でコマンドを入力するためにユーザーが使用するプログラムのことです、
Windowsでは拡張子が「.bat」の「バッチファイル」に相当するものです。
代表的なシェルとして「Bourne Shell(sh)」「C Shell(csh)」「Korn Shell(ksh)」などが有名です。
これらの違いは、何か文章を書くときに「鉛筆」を使うか、「ボールペン」を使うか、「万年筆」を使うか、程度の違いと思ってもらって差し支えないでしょう。
どのシェルも「コマンド操作を行う」という目的で作られています。
実際の現場ではUNIXシェルはさまざまな用途で使われています。
システムの一部としては、たとえば
・C言語やJavaで作られたプログラムを呼び出す
・FTPを使ってファイル転送を行う
・データベースに接続してデータの登録や削除、抽出を行う
といった用途で使われています。
また、サーバ環境を構築したり、開発を効率的に行うためにも使われます。
たとえば、「あるディレクトリに数万のファイルがあったとして、それらを圧縮して別のディレクトリに移動する」、という要件があった場合に、1つ1つのファイルに対して圧縮や移動のコマンドを手入力していく方法では何日もかかってしまいます。
しかし、以下のようなシェルを作れば一瞬で作業が終わります。
for list in `ls`;
do
gzip $list
mv $list.gz /tmp
done
このように複数のコマンドを一定の順序で入力したい場合に、シェルスクリプトは作業の自動化ツールとして有効に使えます。
他にも、
・大量のソースコードのコンパイルを行う
・テストのためにファイルやデータベースに大量のデータを作る
などといった用途でも使われます。
実際の開発現場では非常によく使われますので、少なくとも1つのシェルは使いこなせるようになっておいたほうがよいでしょう。
良いところ
UNIXシェルスクリプトは豊富な制御構文をそろえていますので、他の言語と比べても見劣りしません。
また、ほとんどのUNIX系OSに標準装備されていますので、さまざまな環境で使えます。
その他にも、awkやSQL*Plusなど、異なる言語との連携がしやすいのも特徴です。
悪いところ
インタプリタなのでC言語やJavaに比べると処理速度は遅いです。
また、シェルの種類ごとに、微妙にサポートしている構文が異なるので、異なるシェルの間での移植性は高くありません。
さらに、シェルはUNIXコマンドありきなので、まずはUNIXコマンドを学習する必要があります。
しかし、UNIX系OSといってもBSD系、FreeBSD、AIX、HP-UX・・・など、数えきれないくらい種類があり、コマンドもそれぞれのOSでオプションや挙動が微妙に異なります。
与えられた環境に応じて試行錯誤しながらシェルを作り上げるという柔軟性が必要になるでしょう。
サンプルコード
シェルで「Hello World」を表示するソースコードです。
#!/bin/sh
echo 'Hello, world!'
サンプルコード解説
1行目は/bin/sh用のスクリプトとして記述することを宣言しています。
「/bin/sh」は「Bourne Shell」のことです。
ここを「#!/bin/csh」と書くと「C Shell」、「#!/bin/ksh」と書くと「Korn Shell」で記述することになります。
2行目で「Hello, world!」を表示しています。
UNIX系OSでは「echo」というコマンドで標準出力を行います。
実行方法
先ほどのサンプルコードを「hello.sh」という名前で保存します。
「hello.sh」を実行すると「Hello, World!」が表示されます。
なお、シェルスクリプトを実行するには、あらかじめ「chmod +x」コマンドで
ファイルに実行権限をつけておく必要があります
> chmod +x hello.sh
> ./hello.sh
Hello, World!

UNIXシェル 関連ページ
PR