14:00本連載では、LPICレベル1学習のポイントを、全10回で解説していきます。第5回となる本稿のテーマは「シェルスクリプト」です。システム管理・運用の現場ではシェルスクリプトが多用されています。高いスキルを持つことでLinuxエンジニアとしての仕事が速くなり、高い評価を得られるでしょう。プログラミング経験のない方も難しく考えず、コマンドが処理されていく順番をまず押さえましょう。シェススクリプトの実行に必要な設定である「パーミッション」についても、最低限の説明を行います。シェルスクリプトとはシェルスクリプトとは、「シェル」が解釈することができる「スクリプト」のことです。シェルとは、ユーザーが入力したコマンドを認識し、Linuxのコアであるカーネルにそのコマンドを受け渡すプログラム群です。Linuxでコマンドを実行する場合、何らかのシェルの上で行います。スクリプトとは、コンパイル(機械語への変換処理)を行わずに実行される形態のプログラムのことをいいます。Linuxでは複数のコマンドを使ってある処理を行う場合、それら複数のコマンドをファイルに記述しておき、それをシェルに読ませて実行することができます。この「複数のコマンドをファイルに記述」したものがシェルスクリプトです。シェルスクリプトファイルを作成することにより、コマンドを1つ1つ入力し実行していく手間が省けます。シェルスクリプトのメリットそれだけではありません。処理のフローを制御することも可能になります。「ある処理Cを10回繰り返す」といった反復処理を記述できるのです。何だかとても便利そうな気がしてきますよね。それでは、早速シェルスクリプトを作っていきましょう。シェルスクリプトを作ってみようまず、簡単なシェルスクリプトを作成してみましょう。内容は次のとおりで、3行だけの非常にシンプルなスクリプトです。rootユーザのホームディレクトリに、スクリプトを記述したファイルを作成します。シェルスクリプトであると分かるよう、ファイルの拡張子は「.sh」にします。TEST21行目は何度も出てくるので覚えておきましょう。これはbashというシェルを使ってスクリプトを解釈し実行するという宣言です。実は、シェルにはいくつも種類があります。bashはその内の1つに過ぎません。現在多くのLinuxディストリビューションでbashが標準のシェルとなっていますが、bash以外のシェルも使用できます。シェルによって使えない記述もあるため、このようにスクリプトの先頭で、どのシェルでスクリプトを実行するかを指定しておくのです。bash以外のシェルにスクリプトを実行させる場合には、そのシェルのパスを指定します。bashのパスが「/bin/bash」でなければ、そのパスを指定します。2~3行目では、echoコマンドで「TEST」「TEST2」という文字列を出力しています。このシェルスクリプトを実行すると、次のように文字列が表示されるはずです。/root/sample1.shの実行結果の予想TESTTEST2では、sample1.shを実際に実行してみましょう。スクリプトファイルを実行するには、そのファイルのパスを指定します。今回は相対パス指定を使って、./sample1.shと入力します。許可がありません文字列は表示されず、エラーになってしまいました。?ファイルに実行権限を付与するエラーになった理由は、スクリプトファイルを実行する権限が、自分に付与されていなかったためです。Linuxのユーザーはファイルに対し、「読み取り」「書き出し」「実行」という3つの操作を行うことができますが、そのためにはそれを行う権限(パーミッション)がファイルに付与されている必要があります。-lコマンドで確認できます。sample1.shコマンドの実行結果の先頭にある-rw-r--r--がこのファイルに付与されているパーミッションを表しています。左にある1文字はパーミッションではなくファイルの種類を表します。パーミッションを表す記号は、左から2文字目から一番右の文字までです。パーミッションを表す記号はその位置(何文字目か)で、誰に対するパーミッションかが決まっています。左から2~4文字目:このファイルを作成したユーザーのパーミッション左から5~7文字目:このファイルを作成したユーザーの所属グループ(前回を参照)にいる他のパーミッション左から8~10文字目:その他のユーザーのパーミッションパーミッションは3文字で表されます。並びは常に左からr→w→xという順です。r:そのファイルの読み取り権限を持つw:そのファイルの書き出し権限を持つx:そのファイルの実行権限を持つ-:その権限を持たないsample1.shの場合、このファイルを作成した自分に付与されている権限は、2~4文字目がrw-であることから、読み取りと書き出しだと分かります。自分で作成したファイルではありますが、実行権限は付与されていません。これがエラーの原因だったのです。それでは、sample1.shを実行できるよう、パーミッションを変更しましょう。パーミッションの変更はchmodコマンドで行います。sample1.sh権限を表すr、w、xには数値が割り当てられています。rは1、wは2、xは4です。755コマンドの755はこの数値を使って、付与したい権限の数値を自分、グループのメンバー、他のユーザーそれぞれで足し込んだものです。自分には7を指定してrwxという権限(読み取り、書き出し、実行)を付与しています。グループのメンバー、他のユーザーには5を指定してr-xという権限(読み取り、実行)を付与しています。実行権限を付与するときには、必ず読み取り権限も付与します。ファイルが読めなければ実行できないからです。これでsample1.shを実行するための権限が付与できました。それでは、再度実行してみましょう。./sample1.shTESTTEST2実行されました。「echoコマンドを2回実行し、”TEST”と”TEST2”という文字列を出力する」という処理をシェルスクリプトにまとめることができました。これだけではあまりメリットが感じられないかもしれませんが、これも立派なシェルスクリプトです。次にもう少し複雑なスクリプトを作成していきましょう。※この続きは、会員の方のみお読みいただけます(登録無料)。ナオキ)システムアーキテクチュアナレッジにて講師を行う傍ら、IT技術情報ブログ「テックプロジン」や、スイーツ口コミサイト「スイートウォント」など、各種Webサービスの開発・運営に携わる。ログインEメールパスワード※旧SEメンバーシップ会員の方は、同じ登録情報(Eメール&パスワード)でログインいただけます。役立つ記事(ノウハウ、事例など)やニュース、現場の声をまとめた調査レポートを提供する専門メディアです。