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

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

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

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

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

そもそもシェルとは?

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

カーネルとシェル

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

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

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

shell

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

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

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

「Unix哲学」では、

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

積み木

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

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

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

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

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

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

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

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

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

スクリプトの雰囲気一例

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

シェルスクリプトの例

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

まとめ

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

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

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

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

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リスキルテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメント

  1. a より:

    1分じゃ読めません!

    1. リカレントテクノロジー より:

      いつもご愛読いただきありががとうございます。
      大変申し訳ございません。
      引き続き、ご愛読いただけますと幸いです。

  2. \..... より:

    一分で読む以前に初心者からしたらむずかしいとおもった

  3. 生徒 より:

    ウィンドウ右下のポップアップ?(資料を見てみるボタン)がでないようにする方法を教えてください。

    1. リカレントテクノロジー より:

      いつもご愛読いただきありがとうございます。

      記事を読み進めると画面の右下に出てくる資料の案内につきましては全ての記事で共通に出てくるもので、申し訳ございませんが消すことが出来ないようになっております。

      今後とも、ご愛読のほどよろしくお願いいたします。

  4. mmm より:

    シェルスクリプトとはというのが何となくつかめました。ありがとうございます。

    1. リカレントテクノロジー より:

      いつもご愛読いただきありがとうございます。

      お役に立てて嬉しい限りです。
      引き続き、何卒よろしくお願いいたします。

コメントを残す

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する