Linuxのシェルとは?スクリプトの書き方や実行をわかりやすく解説
Linuxのシェルは、効率よいサーバーを操作・運用するために欠かせません。これからサーバー管理をしたい方、もっと手軽に操作できる環境設定をしたい方は、Linuxのシェルスクリプトを活用しましょう。この記事では、初心者向けにLinuxシェルの書き方や実行までわかりやすく解説します。
目次 [閉じる]
Linuxシェル(Shell)とは?
Linuxのシェルとは、Linuxの中核であるカーネルとユーザーの間を仲介する役割です。
ユーザーが打ち込んだコマンドをOSの核であるカーネルに伝え、動作で応えるプログラムであり、コマンドインタプリタとも呼ばれます。
サーバー管理を行うエンジニアにとって、Linuxシェルの知識は欠かせません。
カーネルとユーザーを繋ぐインターフェイス
シェルは、LinuxOSの核であるカーネルとユーザーを繋ぐインターフェースの役割を担っています。
Linuxのカーネルという心臓部は、LinuxOSを支える多数のプログラムによって構成されています。
ユーザーはこれらプログラムの集合体に必要な動きを要求することで、Linuxをコンピューターとして利用できる仕組みです。
ユーザーによる要求はまずシェルが受け取り、シェルは受け取った要求を翻訳してカーネルに渡します。
そしてOSの中核に位置するカーネルは、シェルから受け取った翻訳済みの要求を実行しています。
シェルは、カーネルを包む「殻」のようなポジションであることから、英単語の「Shell」、つまりシェルと呼ばれるようになりました。
シェルスクリプトは要求コマンドのかたまり
一般的に「シェルを使える」という技術は、「シェルスクリプトを書くことができる」という意味で使われます。
シェルに対するコマンドを理解し、一連の要求をコマンドで組み立てることができるという意味です。
組み立てられたコマンドのひとかたまりを「シェルスクリプト」と言います。
シェルスクリプトは一種のプログラミングです。
コマンドの羅列はもちろん、以下のような条件分岐やループ文などが利用できます。
・if文
・for文
・while文
・case文
これらを駆使して、Linux運用におけるバッチ処理などを操るシェルスクリプトをプログラミングすることが可能です。
\ IT転職のプロが無料でサポート! /
Linuxシェルの具体的な役割と機能
シェルの役割は、ユーザーの要求をカーネルに伝えることです。
ユーザーは基本的に、ターミナルからLinuxに接続し、コマンドを入力することでLinuxを操作します。
ターミナルとは、CUIコマンドを受け付けるための画面で、イメージとしてはハッカーが使う黒い画面です。
例えば、今現在ユーザーが見ているディレクトリである「カレントディレクトリ」を確認する要求を、具体的な動作と順番で整理すると次のようになります。
- ユーザーがPC上でターミナルを開く
- ターミナル上で「pwd」コマンドを入力
- エンターキーで決定
- 「pwd」コマンドがシェルに渡される
- シェルが「pwd」コマンドの意味を「カレントディレクトリの表示要求」と解釈する
- シェルは「カレントディレクトリの表示要求」をカーネルに伝える
- カーネルは「カレントディレクトリ」をシェルに伝える
- カーネルから教えてもらった「カレントディレクトリ」をシェルがターミナルに表示する
- ユーザーはターミナルに表示されたカレントディレクトリを確認する
一つの要求コマンドでは、簡単にイメージするだけでもこれだけの動作が行われており、その中でも、シェルはユーザーとカーネルの間で重要な役割を果たしていることが分かります。
\ 自分に合う働き方が分かる! /
Linuxシェルの種類
代表的なLinuxシェルの種類とコマンドを解説します。
シェル名 | コマンド | 概要 |
Bourne Shell (Bシェル) |
sh | 最も古く、bashなどの基となった |
C Shell | csh | shを基にアレンジされ、配列が可能 |
TENEX C Shell |
tcsh | cshを基にインターフェース部分を拡張 |
Korn Shell | ksh | shの上位互換 |
Bourne again Shell |
bash | shを基に機能拡張、オープンソース版 |
Z Shell | zsh | tcsh、ksh、bashの機能を一部採用 |
Friendly interactive shell |
fish | オートコンプリート機能を搭載 |
以下、それぞれ詳しく解説します。
sh(ボーンシェル /Bシェル)
sh (Bourne shell /Bシェル)は、AT&Tベル研究所のスティーブン・ボーン氏が1977年に開発したシェルで、コマンド名を「sh」としています。
Bシェルとも呼ばれており、標準的なシェルプログラムとして広く使用されているシェルです。
コンパイルを不要とし、変数などが利用できるようになったものBシェルが初めてです。
それまでのシェルに比べるとプログラミング要素を多く取り入れており、シェルスクリプトを組みやすくなったシェルでもあります。
csh(シーシェル)
csh( C Shell)はshが基になったUNIX系OSのためのシェルです。
スクリプトがプログラミング言語のC言語に似た文法の構造をしており、sh、bashなどとは異なる系統として位置づけられています。
配列が使用可能な点も大きな特徴です。
tcsh(ティーシーシェル)
tcsh(TC Shell /TENEX C Shell)は、cshの機能が拡張されたものです。
頭文字のTは、TENEXならびにTOPS-20に由来しています。
入力補完機能やスペルの訂正機能、C言語ソースコードの簡単な文法チェックが行えるなどの機能が備わりました。
ksh(コーンシェル)
ksh(Korn Shell)は、1980年代後半に開発されたUNIX系OS用のシェルです。
Bシェルの機能を包含し、より動作が高速であること、C言語に似た制御構造を持っていることなどが特徴です。
bash(ボーンアゲインシェル)
bash(Bourne-Again shell)は、Bシェルをベースに様々な機能が拡張されたシェルです。
Linuxでもbashが多く使われています。
bashはBシェルと互換性がありますが、更に複雑なシェルスクリプトを組むことが可能です。
zsh(ズィーシェル)
Bシェルの改良版として登場したのがzsh(Z Shell)です。
tcsh、ksh、bashなどの機能が取り込まれ、bashの上位互換として位置づけられています。
テーマやプラグインによるカスタマイズが豊富な点が特徴です。
fish(フィッシュ)
fish(Friendly interactive shell)は、ユーザーフレンドリーなシェルとして、多機能さと分かりやすさを備えています。
対話的に操作できる点が特徴で、例えばコマンドを入力することで予測を表示するオートコンプリート機能や、過去の履歴表示といった機能が特徴です。
\ IT転職のプロが無料でサポート! /
Linuxシェルスクリプトの具体例
ここで、シェルスクリプトの具体例を見ていきましょう。
基本的にはコマンドの羅列で、書いた順番に上から下へ実行されるインタプリタ型です。
そのため、実行したい機能の流れとコマンドをしっかりと理解していれば、複雑なロジックはほぼ不要です。
シェルスクリプトの記述方法
ここでは例としてbashを利用します。
以下、bashを利用して「Hello World」を表示させる方法です。
1行目:「bash」を利用するため、bashへのパスを宣言しています。
2行目:「Hello Warld」を表示することを要求しています。
3行目:シェルスクリプトの正常終了を意味しています。
シェルの実行方法
シェルスクリプトを書いたら、ファイルを保存しますが、拡張子は「.sh」です。
例えば、ファイル名を「hello.sh」とした場合は、実行時に以下のようなコマンドを入力します。
ただし、実行前にシェルスクリプト自体の実行権限を変更し、実行ファイルとしての許可を与える必要があります。
\ IT転職のプロが無料でサポート! /
Linuxシェルスクリプトを使うと便利なシーン
実際にシェルスクリプトを使うと様々なシーンで作業の効率化を図ることができます。
その中でも、代表的なシェルスクリプトの使い方を見ていきましょう。
logの吐き出し
Linuxで稼動させるものはサーバーです。
例えばWebサーバーであれば、ページが表示されなかったり、特定のプログラムが読み込めずにページの一部が欠落したりというトラブルがあります。
そんな時、サーバーのlogを吐き出すシェルスクリプトを仕込んでおくと便利です。
サーバーエンジニアは、トラブルがあれば最初にlogを確認します。
そこにはサーバー上で起こるイベントのほとんどが記載されていますが、その中から特定のエラーコードや文字列を定期的に別ファイルへ吐き出すことで、迅速なトラブル解決が可能になります。
これらの作業を単発のコマンドで毎回確認するのは非効率です。
そこで、シェルスクリプトをあらかじめ作っておくことで、そのシェルスクリプトを実行するだけで原因の特定を効率的に進めることができます。
疎通確認
Linux上で稼動するサーバーには、常に疎通しておくべき機器が多数存在します。
特にバックアップ用のサーバー(セカンダリサーバーなど)は、実際に稼働しているサーバーと常に同期を取りながら運用するものです。
それら機器との疎通が取れているかを常に監視する機能も、シェルスクリプトで作成可能です。
一定の間隔でping(疎通確認コマンド)を飛ばしながら、応答が無い機器があった場合に通知するなど、シェルスクリプトを実行しておくことで、突然ダウンした機器をすぐに察知し対処することができます。
\ IT転職のプロが無料でサポート! /
スクリプト言語を利用する際には
Kornシェルは、スクリプト言語で用いる高度な機能を備えています。
例えば、JavaScriptが有効なウェブサイトの構築、膨大なデータの数値化を行う場面で有用です。
因みに、多様なオペレーティングシステムに対応しているため、トラブルが発生した時のリスクを軽減しやすいでしょう。
環境変数PATHの設定
シェルスクリプトを実行する時、プログラムの名前と場所を入力・指定する必要があります。
しかし実行する度、入力・指定する作業を簡易化するために役立つのがPATHの環境変数です。
まず「echo」コマンドを活用し、環境変数PATHを表示させます。次に「export」コマンドで環境変数を設定しましょう。
この時「:」で区切れば、複数のプログラムの名前を登録可能です。
ただし、探索の優先順位を一律にすることはできません。先頭に記されたものほど、優先的に探索されます。
コマンドの出力先をファイルに変える
通常コマンドを実行した結果は、ディスプレイに標準出力されます。
もしも出力先をファイルに切り替える時には、リダイレクション記号が役立つでしょう。
以下にリダイレクション記号の使い方と種類を紹介します。
>
入力するリダイレクション記号が1個の場合、コマンドの実行結果を指定したファイルに上書きします。その代わり、既に書き込まれている内容が全て消去されるため、ファイルの指定には要注意です。
>>
入力するリダイレクション記号が2個の場合、コマンドの実行結果が指定したファイルの最下行に追加する形で出力されます。
上記、いずれもコマンドの後に続けて入力し、出力先のファイルの名前を指定します。なお、書き込みの対象となるファイルが存在していなかったとしても、自動的にファイルが新規作成され、実行結果を残すことが可能です。
コマンドの入力
シェルがbashの場合、ショートカットキーを活用して作業を進められます。
ポピュラーなショートカットキーは、以下の通りです。
CtrlプラスA
カーソルを入力した文字列の先頭に移動させます。
CtrlプラスE
カーソルを入力した文字列の最後尾に移動させます。
CtrlプラスH
カーソル左側に入力されている文字を削除します。
CtrlプラスD
カーソルの上方に入力されている文字を削除します。
Tab
入力の途中で押すことによって、自動的に文字列が補完されます。 上記の他にも色々なショートカットキーがあります。UNIXを導入する折、一通り覚えておくと便利でしょう。
\ IT転職のプロが無料でサポート! /
Linuxシェルをサーバー運用に役立てよう
シェルは、Linuxのカーネルとユーザーを繋ぐインターフェイスであり、カーネルの「殻」のポジションを担います。
ユーザーがターミナルを使ってコマンドを実行した際には、シェルがカーネルに要求を伝え、カーネルから返ってきた結果をユーザーに伝える役割を担い、「シェルスクリプト」を作成することで複雑なバッチ処理などをコマンド一つで実行することも可能です。
Linuxをメインに利用するサーバーエンジニアにとって、シェルを理解することは必要不可欠な知識です。
「エンジニアとして上流工程に携わりたい」
「IT業界に転職して年収を上げたい!」
「もっとモダンな環境で働きたい!」
などのキャリアのお悩みは是非、「IT・Web業界の知見が豊富なキャリアアドバイザー」にご相談ください!
IT特化の転職エージェントのGeekly(ギークリー)なら、専門職種ならではのお悩みも解決できる専任のキャリアアドバイザーがカウンセリングから入社後まで完全無料で全面サポートいたします!
転職しようか少しでも悩んでいる方は、お気軽に以下のボタンからご相談ください。
\ IT転職のプロが無料でサポート! /
あわせて読みたい関連記事
新着記事はこちら
-
- AI企業ランキング日本版!売上高・平均年収・離職率トップ5は?
-
2025/4/1
- AI
- ランキング
- 業界紹介
-
- 「SKYFLAGを世界一のプロダクトへ」挑戦を続けるSkyfallのプロダクト本部が語る今後の展望とは
-
2025/3/28
- 事業インタビュー
- 株式会社Skyfall
- 特集
-
- 【アンケート調査】今の会社を選んだ理由や、企業選びで重視する要素とは?
-
2025/3/28
- IT転職
- アンケート調査
- 特集
-
- なぜ書類選考で落ちた?ショックを受けなくても大丈夫な理由を解説
-
2025/3/27
- IT転職
- 書類選考
- 転職ノウハウ
-
- 技術だけでは終わらせない。事業と会社を動かすエンジニアの挑戦。新しい価値を生み出し、会社の未来を創る。ナハトでのエンジニアの働き方とは
-
2025/3/17
- 事業インタビュー
- 株式会社ナハト
- 特集
-
- インフラエンジニアの自己PR例文|経験者・未経験者向けの書き方やポイントを解説
-
2025/2/28
- IT転職
- インフラエンジニア
- 職種解説