シェルスクリプトとは?できることと作成・実行方法を徹底解説!
シェルスクリプトとは、シェルと呼ばれるプログラムを組み合わせて記述し、実行される簡単なプログラムです。
なんとなく聞いて気になっているという方や、名前だけは聞いたことがあるけれど詳しくは理解していないというエンジニアの方も多くいるのではないでしょうか。
今回はそんな方に向けて、シェルスクリプトの概要やシェルスクリプトによってできることなど、その概要を詳しくご紹介したいと思います。
目次
【入門】そもそも「シェル(Shell)」とは?
シェルスクリプトを理解するうえでまず欠かせないのが、「シェル(shell)」というプログラムについて理解しておくことです。
シェルとは、CLI(コマンドラインインターフェース)という、コンピュータを操作するためのインターフェースとなる黒い画面上で動くソフトウェアの一種です。
ユーザーが入力したコマンドを受け取ってOSの中核「カーネル」へと送る、いわばユーザーとOSの橋渡しのような役割をするもので、コマンドと言われる命令文を使ってOSを操作することもできます。
そんなシェルにはいろいろな種類があり、その中で最も標準的なのがLinux系OSで広く利用されるBashです。
そのほかにも、
- Bashの前身である BourneShell
- C言語風のCsh
- Bash 等の後継・上位互換のZsh
などがあります。
これらのほかにもいろいろなシェルがありますが、大まかな文法はどんなシェルも共通です。
そのため一つのシェルについてしっかり覚えれば、ほかのシェルの扱いも簡単にできますね。
シェルスクリプトとは?
今回の記事でご紹介したいシェルスクリプトとは、上で説明したシェルで実行される操作をまとめたもののことを指します。
スクリプトには「台本」という意味があり、シェルが行うコマンドをテキストとしてまとめた台本がシェルスクリプトだということですね。
シェルによってバックアップやセットアップなどの処理を行う際の一連の操作をシェルスクリプトとしてまとめて記述しておくことで、それを実行すれば自動的にその処理を行うことができます。
また、シェルスクリプトはあくまでもシェルコマンドであるため、OSを問わずにシェル上で動かせるというメリットがあります。
シェルのコマンドをそのままシェルスクリプトで使うことも可能なため、シェルのコマンドについて理解していれば簡単に記述することができるでしょう。
シェルスクリプトは基本的にテキストファイルを使うため、ほかのプログラミング言語とは違ってコンパイルなどが不要で、比較的短い記述で実行が可能なのも魅力的ですね。
シェルスクリプトでできること
ここまでシェルスクリプトの概要として、シェルスクリプトがユーザーからのコマンドをOSに伝える役割をするシェルをより利用しやすくするプログラムであることをご説明しました。
では、実際にシェルスクリプトを利用することで、どのようなことが可能になるのでしょうか。
シェルスクリプトを利用するとできる、主な3つのことをご紹介します。
PC上での基本的な操作
シェルスクリプトでは、ファイルの移動やコピペ、ログの記録・抽出などPCでできる基本的な操作ができます。
特に、UNIX系のOSの場合Bashのシェルスクリプトが標準で入っていることが多いので、LinuxやMacのOS上での操作をするときに便利です。
複雑なタスクの効率化
シェルスクリプトのパイプという機能を使うことで、複数の違うコマンドを連携させることができます。
例えば、grepというコマンドは文書の中から特定の文字列が含まれている箇所を全部抽出してくれます。
では、このgrepが抽出した結果の中で、ラスト3つ分の結果だけを抽出したい場合はどのようにすればよいのでしょうか。
正解は、「tailコマンドと組み合わせる」です。
tailには、入力された文書について指定した行数分を末尾から読み取る機能があります。
そのため、パイプを使用してgrepとtailを組み合わせることで、文書の中から特定の文字列のラスト3つ分を取得できるのです。
このように、シェルスクリプトのパイプ機能を使うことで、一つのコマンドだけでは実現できない複雑なタスクの効率化が可能なのです。
業務の自動化
コマンドだけではなく、JavaやRubyなどの言語で実装されたツールやソフトもシェルスクリプトで組み合わせられます。
組み合わせることができるツールやソフトに制限はありません。
Google ChromeのようなGUIアプリやGitのように開発に欠かせないCLIツールなど、いろいろなツールやソフトをシェルスクリプト内で連携することができます。
また、自作のツールとの連携も可能です。
このように、シェルスクリプトによりいろいろなツールを組み合わせれば、さらなる業務自動化や効率化ができるでしょう。
シェルスクリプトの作成から実行までの流れ
シェルスクリプトを利用すれば業務を効率化・自動化することができるため、実際に利用してみたくなったという人もいらっしゃるのではないでしょうか。
ここでは、シェルスクリプトを作成し、実行するまでの実際の流れを簡潔にご説明したいと思います。
シェルスクリプトの作成
まずは、シェルスクリプトを作成します。
「vi」や「emacs」といったエディターを利用し、ファイルに記述していきます。
まず基本として注意しなければならないのは、
- shebangと呼ばれる、どのシェルによって実行されるかを宣言するための文字列を先頭行に記述する(例:「#!/bin/bash」)
- 上から順に実行される
- ファイルを保存する際は、「.sh」などシェルスクリプトとして認識されるものを選ぶ
ということです。
また、基本文法のほかに変数を使うことも可能です。
標準的なシェルであるbashで、変数を利用し作成した「Hallo World!」を出力するシェルスクリプトの例を見てみましょう。
#!/bin/bash
STR="Hello world!"
echo $STR
このように「変数名=値」と記述し、「$変数名」の記載で呼び出すことができます。
他にも、シェルスクリプトで多く利用される主な特殊変数に以下のようなものがあります。
$0 | シェルスクリプトのファイル名 |
$? | 直前のコマンドの実行結果 |
$# | 実行時の引数の数 |
$*$@ | 実行時のすべての引数の値 |
$1,$2,$3,$4…… | n番目の引数の値 |
シェルスクリプトの実行
作成したシェルスクリプトを実行する方法には、
- 実行権限を付与せず各種コマンドなどで実行する
- 実行権限を付与してコマンドとして直接実行する
の2つがあります。
先ほどのシェルスクリプトを、ファイル名「test.sh」として保存したとします。
実行権限を付与しない場合には、「bash ./test.sh」といった形でそのまま実行することができます。
しかし、他のシェルスクリプトからも呼び出し可能なコマンドとして実行できるよう、基本的に実行権限を付与して実行することが推奨されています。
実行権限を付与するには、”chmod”というコマンドを利用して次のような形にしましょう。
$ chmod +x test.sh
または
$ chmod 755 test.sh
“x”や“755”といった表記は、それぞれ以下の表のようなファイル権限の内容を表しています。
権限の内容 | 数字表記 | アルファベット表記 |
---|---|---|
書き込み | 2 | w |
読み取り | 4 | r |
実行 | 1 | x |
アルファベットではそのまま、数字では持つ権限をすべて合算した数値で判断します。
上の例でも755と3桁の数字になっているように権限は左から「所有者-所属グループ-その他ユーザー」それぞれの権限を表しており、”755”は所有者は全権限、所属グループ・その他のユーザーは読み取りと実行の権限のみを持つという意味になりますね。
アルファベット表記では複数の権限を持つ場合、”rx”というように重ねて記述することになります。
シェルスクリプトをWindowsで実行する方法
シェルスクリプトはLinuxやUnixといったOSで主に使用されており、これらのOSではターミナルからそのまま利用することができます。
MacOSもUnix系のOSであるため、同様に使用可能ですね。
しかし、Windowsではシェルスクリプトを標準機能として利用することはできません。
最後に、そんなWindowsでシェルスクリプトを実行するための2つの方法をご紹介します。
◯WSL(Windows Subsystem for Linux)を有効にする
コントロールパネルから“プログラムと機能”または“プログラム”を開き、「Windowsの機能の有効化または無効化」を選択します。
すると画面上に「Windows Subsystem for Linux」もしくは「Linux用Windowsサブシステム」の項目が出てきますので、それらのチェックボックスにチェックを入れ、OKしてシステムをインストールします。
再起動後に「Ubuntu」というLinuxディストリビューションをダウンロードすると、スタートメニューに追加されたコマンドプロンプトからシェルスクリプトの実行が可能になります。
◯「Git Bash」をインストールする
Linuxなどにプリインストールされているコマンドラインツール「Git Bash」には、Windows用のバージョンもあります。
それをインストールすることでも、Linuxのコマンドが実行できるようになります。
Git Bashは、こちらからインストール可能です。
まとめ
シェルスクリプトは、比較的簡易的なプログラミング言語といわれていますが、非常に奥が深い分野です。
そんなシェルスクリプトはJavaやCなどのプログラミング言語と比べると、できることが限られていますが、繰り返しや条件分岐などの基本的な機能を一通り備えているので、複数のコマンドを組み合わせた処理でも十分実施できるのです。
また、シェルスクリプトはソフトウェアの追加インストールがいらないので、手軽に扱うことができます。
ぜひ、シェルスクリプトをうまく活用し、作業の効率化を目指してくださいね。