※『[改訂第3版]シェルスクリプト基本リファレンス』(技術評論社、2017)、
前付けおよび第0章「シェル&シェルスクリプトの基礎知識」より
OSとユーザーとのインターフェースとなる重要プログラムであるシェル(shell)。シェルの中でも、Linux系で標準シェルとして多く使われてきたbash(バッシュ)が、macOS(OS X)でも標準シェルとなっていて最近ではWindows 10でも使えるようになり対応環境が広がっています。
それらの環境で、ディレクトリ内のファイルに一括処理をかけたいといった日常的な作業を実行するツールを簡単に作ることができるのがシェルスクリプト(shell scrpit)です。シェルスクリプトと聞くと少々難しそうですが、その中身はテキストファイルです。OSの標準シェルが使える環境なら実行環境のセットアップはなしで試すことができ、手軽にお馴染みのコマンドを並べながらスクリプトを作成していくことができます。そして、定番のコマンドや書き方の作法にならったシェルスクリプトを作っておけば、長く使い回せるのは嬉しいところです。シェルとシェルスクリプトの基本を見てみましょう。
シェルの2つの側面
ユーザからの視点で、シェルには2つの利用方法があります。
- ユーザーから対話的にコマンド入力を受け付ける「コマンドインタープリタ」としての使い方
- シェルスクリプトのファイル内容を解釈しながら実行する「インタープリタプログラム」としての使い方
「コマンドインタープリタ」としてのシェル
Linux系OSでは、ログインすると最初に起動するプログラムがシェルです。最近はグラフィカルモードでログインすることも多いのでこの限りではないかもしれませんが、グラフィカルモードでも端末エミュレータのプログラムを開けばユーザーがシェルを使うことができます。
図Aがグラフィカルモードでログインして、シェルを起動した様子です。図Bはテキストモードでログインして、シェルを起動した様子です。図Aも図Bも、「XXXX$
」のような行が表示されています。これがシェルプロンプト(shell prompt)で、シェルがユーザーからの入力を受け付けている様子がわかります。
図A グラフィカルモードのログインとシェルの起動
図B テキストモードのログインとシェルの起動
シェルスクリプト ……「インタープリタプログラム」としてのシェル
後者のシェルの使い方で登場するのが、シェルスクリプトです。次のような中身です。これを「hello」というファイル名を付けて保存します。
#!/bin/sh ……1行めの行頭から「#!」に続いてシェルに絶対パスを記述
echo 'Hello!' ……行いたい処理を記述(ここではechoコマンドで文字列を表示するだけ)
作成から実行までの流れは以下のようになります。
$ vi hello ……テキストエディタで上記ファイルの内容を作っておく
$ chmod +x hello ……作成したファイルに、実行属性を付ける
$ ./hello ……作成したシェルスクリプトの実行
Hello! ……実行結果
シェルスクリプトはシンプルで長く役立つ技術知識
各種OS対応環境が豊富な言語であるシェルスクリプトは、長く役立つ技術知識です。OS組み込みのコマンドをはじめ、シンプルな基本で成り立っていて、それら単機能の組み合わせでさまざまな処理を効率的にこなすことができます。気軽に試すことができしっかり学べば長く役立つ、シェルスクリプトを始めてみませんか。