shell(シェル)とは?種類や使い方をわかりやすく解説
UnixやLinux系のOSではコマンドを使用してさまざまな処理を行うことができますが、シェル(shell)を使用することで、さら便利な使い方が可能になります。
シェルはLinuxなどで開発をしていない限りは聞き慣れない言葉だと思いますが、エンジニアとしてはぜひとも覚えておきたい処理の1つになります。
ここではシェルとは何か?から実際の使い方まで紹介していますので、興味のある方はぜひ参考にしてください。
目次
shell(シェル)とは
shell(シェル)とはWikipediaの説明を確認してみると、以下のように記載されています。
シェル (英語: shell) はオペレーティングシステム (OS) のユーザーのためにインタフェースを提供するソフトウェアであり、カーネルのサービスへのアクセスを提供する。
インタフェースを提供するソフトウェア?カーネル?いまいちピンとこない方もいるかもしれませんが、シェルを一言で言うと「UNIXやLinux系でOSと対話するためのインターフェイス」となります。
カーネルとはUnixOSにおける核のようなもので、カーネルを実行することにより、OSのさまざまな操作が可能となります。
そのカーネルへアクセスすることができるのがシェルで、シェルの内容が記述されたファイルを実行することで、C言語やJavaのように変数や制御文も記述することができ、プログラムに近い操作が可能になります。
シェルはコマンドを連続して実行することが可能で、コマンドを記述した処理のことをシェルスクリプトともいいます。また、変数や制御文なども記述することができます。
shell(シェル)の種類とは
コマンドの内容を記述できてプログラムのような制御が可能なシェルですが、さまざまな種類が存在します。以下に代表的なシェルを紹介します。
sh(Bourne Shell)
AT&Tベル研究所のスティーブン・ボーンが開発したshはUnix系のシェルの中でも古く最も基本的なシェルとなります。
csh(C Shell)
カリフォルニア大学バークレー校の学生であるビル・ジョイが開発したC言語の構文に似せた設計で作られたシェルです。BSD UNIXの標準シェルとしても利用されています。
bash(Bourne-Again shell)
マサチューセッツ工科大学のブライアン・フォックスによって開発されたシェルでBourne shellのフリーソフトウェアによる代替を目的として作成されました。
現在ではbashがLinuxディストリビューションやMacOSのシェルとして使われており、Linux標準シェルはbashと言われるほど広く普及しています。
シェルはどんなときに使うの?
シェルはどんなときに使うのでしょうか?前述したようにシェルを使えばカーネルを動かせることができる。つまりはOSを操作できることができます。
例えば定期的にシステムのバックアップを取得したり、作成された特定のファイルを指定した時間になったら他のディレクトリに移動するなどの処理もシェルスクリプトで記述しておけば簡単に実行できます。
また、OS起動時に自動的にシェルを実行する設定をしておけば、起動時に設定したい命令を記述しておくことで各種設定を自動化することができます。
このような処理はUNIX/Linux系OSを使用したシステムでよく使われます。
シェルスクリプトでプログラムを作ってみよう
ここでは実際にシェルスクリプトでプログラムを記述して実行する方法を紹介します。
hello worldを出力してみよう
LinuxまたはMacOSでターミナルを起動し、拡張子「.sh」でファイルを作成します。
ここではsamplescript.shを作成します。
$ vi samplescript.sh
まずはhello worldを出力するプログラムを作成してみましょう。
#!/usr/bin/bash
echo hello world
プログラムを記述して保存したら以下のコマンドでファイルを実行します。
$ bash samplescript.sh
hello world
無事hello worldが出力されましたね。
シェルスクリプトを実行するには「bash ファイル名.sh」または「./ファイル名.sh」と記述します。
1行目の「#!/usr/bin/bash」は使用するシェルの種類を記述するもので、ここではUnix標準のbashを使用していることを意味しています。
2行目のechoは文字列を出力するために使用するコマンドとなります。
変数に値を代入してみよう
次にシェルスクリプトで変数に値を代入して、計算した結果を出力してみましょう。
#!/usr/bin/bash
NUM1=100
NUM2=200
echo 変数の値を出力
echo $NUM1
echo $NUM2
echo 四則演算
echo $((NUM1+NUM2))
echo $((NUM1-$NUM2))
echo $((NUM1*$NUM2))
echo $((NUM1/$NUM2))
実行結果
$ bash samplescript.sh
変数の値を出力
100
200
四則演算
300
-100
20000
0
変数を使用するときは先頭に$をつける必要があります。また、シェルで足し算引き算などの計算結果を出力したい場合は、先頭に$をつけて「$((処理))」のように記述します。
条件式
シェルスクリプトで条件式を使用する場合は他のプログラム言語同様にif文を使用します。
if文は以下のように記述します。
if [条件式]; then
真の場合の処理
else
偽の場合の処理
fi
実際に処理を記述します。
#!/usr/bin/bash
NUM1=100
NUM2=200
if [ $NUM1 = $NUM2 ]; then
echo '等しいです'
else
echo '等しくありません'
fi
実行結果
$ bash samplescript.sh
等しくありません
まとめ
ここではシェル(shell)について概要や特徴、使い方についてわかりやすく解説しました。シェルはUnixやLinux系OSで開発をする際には必ずと言っていいほど使用します。実際にシェルスクリプトを記述するためにはコマンドの理解も必要ですが、覚えてしまえば簡単な記述でさまざまな処理が可能になりますので、ぜひ覚えておきましょう。