シェルスクリプトとはシェルで実行するコマンドなどがまとまったドキュメントのようなものだ。
このドキュメントを用意しておくと、上から順番にコマンドが実行されていくので、いちいちコマンドを打たなくて済む。例えば、定期的な保守作業など、シェルスクリプトを用意しておけば、コマンドを打たずにすぐに実行できる。
このページではシェルスクリプトとは?について説明した。シェルスクリプトの書き方を学ぶ前に、知っておきたい事前知識だ。
そもそもシェルとは?
シェルとは「オペレーティングシステムと対話するためのインターフェイス」であり、コマンドなどを制御する「環境」だ。
このような形でLinuxの核となるカーネルを覆っている殻がシェルだと思ってもらうとわかりやすい。
このシェルがない場合ログインしたとしても、何も表示されない、もしくはログイン画面に戻されてしまうだろう。つまり、ほぼ何も出来ない。
シェルやカーネルやターミナルがわかりにくくなっていると思うが、次の図のような関係だ。
シェルがあることでコマンドを受付、オペレーティングシステムとの対話ができるようになる。CUI環境においてシェルは最も身近なインターフェイスだ。
Linuxにおいて現在一般的なシェルは「bash」である。
シェルスクリプトとUnixの文化
「Unix哲学」では、
- 小さなコマンドをパイプなどで繋ぎ、コマンドをフィルタの様にふるまうようにすること
- 基本的に出力はプレーンテキストに、移植性を考慮してシェルスクリプトをつかおう
などといった教訓がある。Unixがもともと小さく小さくを意識されて作られたものだからだ。
LinuxもUnix哲学に通じるものが多い。実際パイプやリダイレクトを使うだけでも色々なことが実現できるが、シェルスクリプトは、さらにそこに制御を加えることでより高度なことが実現できる。
シェルスクリプトはプログラミングの一種
シェルスクリプトとは言わば「シェルが解釈できる台本」だ。
もっと簡単に言うと、コマンドが並んでまとめて実行できるようにドキュメントにしたものとでも思えばいい。
例えば次のようなものでも十分にシェルスクリプトになる。
1 2 3 |
echo 'shell' echo 'script' echo 'test' |
ただ、文字列を表示させるだけだが、これも十分シェルスクリプトだ。
これに加えてプログラミング的なこともできるようになる。
Linuxのシェルは、変数や分岐や繰り返し、といった制御構造を持つことができる。詳しくは後にご説明するが、人間が手で書くのだと大変なものを、プログラムが自動的に処理してくれるようになる。
また、シェルスクリプトはテキストで記述され、同じシェルとコマンドが動作する環境であれば、どこでも動作するので移植性が高く便利だ。
積み木を組み立てる感覚で
プログラミングと聞くと拒否反応を起こしてしまう人もいるかもしれない。
しかし、シェルスクリプトはまったく難しくない。他のプログラミング言語を覚えるのに比べたら苦労はほとんどないと言っていい。
もっと率直に言うと、苦労するような複雑なものはシェルスクリプトで書かないほうがいい。
基本的にコマンドを並べ制御し、作業を自動化するための手段であり、例えるなら、「積み木をするような感覚でコマンドをつみあげていく」のである。
それらコマンドを「条件分岐」でときおりスイッチしたり、「繰り返し」でループをしたり、といった制御をすることになる。
アルゴリズムやデータ構造などを意識しないわけではないが、システム記述言語であるC言語やJava言語などと比較すると、圧倒的に楽である。
そもそも細かいアルゴリズムなどはコマンドレベルで吸収されているため、中身を知らなくても、入力と出力される結果さえわかっていればなんとかなることが多い。
インタプリタとしてのシェル
実行方法もスクリプトをテキストで記述、実行権限を与え、実行する。この手順のなかでコンパイルは存在しない。コンパイルとは機械語への翻訳作業のことで、Javaなどのプログラミング言語ではコンパイルしないと実行できない。
「シェルはインタプリタ」だからだ。
上から順番にとにかく、コマンド、制御文、変数などを解釈しながら順を追って実行する。
基本的にインタプリタ、シェルスクリプトはコンパイルがないので、即実行結果がわかる。そういった意味でも簡単だ。
反対にコンパイル型の言語に比べて速度が落ちる。しかし、上でも述べた通り、そんな大規模なものであればシェルスクリプトを使わないほうがいい。あくまでもシェルスクリプトはコマンドの羅列が若干便利になったものくらいに考えておこう。
スクリプトの雰囲気一例
細かいところは後々紹介するが雰囲気としては以下のようなものになる。
徐々にご紹介していこう。
まとめ
このページでは「シェルスクリプトとは?」について簡単に紹介した。
シェルやカーネル、ターミナルなどの用語も混ざってしまうとわかりにくくなっていくので、この機会に消化してしまおう。
1分じゃ読めません!
いつもご愛読いただきありががとうございます。
大変申し訳ございません。
引き続き、ご愛読いただけますと幸いです。
一分で読む以前に初心者からしたらむずかしいとおもった
ウィンドウ右下のポップアップ?(資料を見てみるボタン)がでないようにする方法を教えてください。
いつもご愛読いただきありがとうございます。
記事を読み進めると画面の右下に出てくる資料の案内につきましては全ての記事で共通に出てくるもので、申し訳ございませんが消すことが出来ないようになっております。
今後とも、ご愛読のほどよろしくお願いいたします。
シェルスクリプトとはというのが何となくつかめました。ありがとうございます。
いつもご愛読いただきありがとうございます。
お役に立てて嬉しい限りです。
引き続き、何卒よろしくお願いいたします。