【1分でわかる】シェルスクリプトとは?

  • このエントリーをはてなブックマークに追加
  • Pocket
シェルスクリプトとは

シェルスクリプトとはシェルで実行するコマンドなどがまとまったドキュメントのようなものだ。

このドキュメントを用意しておくと、上から順番にコマンドが実行されていくので、いちいちコマンドを打たなくて済む。例えば、定期的な保守作業など、シェルスクリプトを用意しておけば、コマンドを打たずにすぐに実行できる。

このページではシェルスクリプトとは?について説明した。シェルスクリプトの書き方を学ぶ前に、知っておきたい事前知識だ。

そもそもシェルとは?

シェルとは「オペレーティングシステムと対話するためのインターフェイス」であり、コマンドなどを制御する「環境」だ。

カーネルとシェル

このような形でLinuxの核となるカーネルを覆っている殻がシェルだと思ってもらうとわかりやすい。

このシェルがない場合ログインしたとしても、何も表示されない、もしくはログイン画面に戻されてしまうだろう。つまり、ほぼ何も出来ない。

シェルやカーネルやターミナルがわかりにくくなっていると思うが、次の図のような関係だ。

shell

シェルがあることでコマンドを受付、オペレーティングシステムとの対話ができるようになる。CUI環境においてシェルは最も身近なインターフェイスだ。

Linuxにおいて現在一般的なシェルは「bash」である。

シェルスクリプトとUnixの文化

「Unix哲学」では、

  • 小さなコマンドをパイプなどで繋ぎ、コマンドをフィルタの様にふるまうようにすること
  • 基本的に出力はプレーンテキストに、移植性を考慮してシェルスクリプトをつかおう

などといった教訓がある。Unixがもともと小さく小さくを意識されて作られたものだからだ。

LinuxもUnix哲学に通じるものが多い。実際パイプやリダイレクトを使うだけでも色々なことが実現できるが、シェルスクリプトは、さらにそこに制御を加えることでより高度なことが実現できる。

シェルスクリプトはプログラミングの一種

シェルスクリプトとは言わば「シェルが解釈できる台本」だ。

もっと簡単に言うと、コマンドが並んでまとめて実行できるようにドキュメントにしたものとでも思えばいい。

例えば次のようなものでも十分にシェルスクリプトになる。

ただ、文字列を表示させるだけだが、これも十分シェルスクリプトだ。

これに加えてプログラミング的なこともできるようになる。

Linuxのシェルは、変数や分岐や繰り返し、といった制御構造を持つことができる。詳しくは後にご説明するが、人間が手で書くのだと大変なものを、プログラムが自動的に処理してくれるようになる。

また、シェルスクリプトはテキストで記述され、同じシェルとコマンドが動作する環境であれば、どこでも動作するので移植性が高く便利だ。

積み木を組み立てる感覚で

プログラミングと聞くと拒否反応を起こしてしまう人もいるかもしれない。

しかし、シェルスクリプトはまったく難しくない。他のプログラミング言語を覚えるのに比べたら苦労はほとんどないと言っていい。

もっと率直に言うと、苦労するような複雑なものはシェルスクリプトで書かないほうがいい。

基本的にコマンドを並べ制御し、作業を自動化するための手段であり、例えるなら、「積み木をするような感覚でコマンドをつみあげていく」のである。

積み木

それらコマンドを「条件分岐」でときおりスイッチしたり、「繰り返し」でループをしたり、といった制御をすることになる。

アルゴリズムやデータ構造などを意識しないわけではないが、システム記述言語であるC言語やJava言語などと比較すると、圧倒的に楽である。

そもそも細かいアルゴリズムなどはコマンドレベルで吸収されているため、中身を知らなくても、入力と出力される結果さえわかっていればなんとかなることが多い。

インタプリタとしてのシェル

実行方法もスクリプトをテキストで記述、実行権限を与え、実行する。この手順のなかでコンパイルは存在しない。コンパイルとは機械語への翻訳作業のことで、Javaなどのプログラミング言語ではコンパイルしないと実行できない。

「シェルはインタプリタ」だからだ。

上から順番にとにかく、コマンド、制御文、変数などを解釈しながら順を追って実行する。

基本的にインタプリタ、シェルスクリプトはコンパイルがないので、即実行結果がわかる。そういった意味でも簡単だ。

反対にコンパイル型の言語に比べて速度が落ちる。しかし、上でも述べた通り、そんな大規模なものであればシェルスクリプトを使わないほうがいい。あくまでもシェルスクリプトはコマンドの羅列が若干便利になったものくらいに考えておこう。

スクリプトの雰囲気一例

細かいところは後々紹介するが雰囲気としては以下のようなものになる。

シェルスクリプトの例

徐々にご紹介していこう。

まとめ

このページでは「シェルスクリプトとは?」について簡単に紹介した。

シェルやカーネル、ターミナルなどの用語も混ざってしまうとわかりにくくなっていくので、この機会に消化してしまおう。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できる。

短期間でエンジニアになる方法

・「まったくの初心者だけどエンジニアになりたい!」

・「プログラマーとして転職をしたい!」

という方はリナックスアカデミーの資料を見てみてください。短期間で未経験からエンジニアになることができるスクールとして15年間選ばれ続けてきた理由やノウハウが載った資料です。

エンジニアの入り口に立つために必要な勉強技術の最新動向本当に使えるIT資格学習に役立つ国からの奨励金などの情報が詰まっています。

無料で2,3日中にお手元にお届けします。


資料を見てみる

SNSでもご購読できます。

コメントを残す

*