TechReach

Linuxの理解に欠かせないシェルとは?シェルスクリプトについても解説

Linuxを使いこなすためには、『シェル』についての理解が必要になります。この記事では、OSの構成要素であるカーネルやシェルの説明に加え、シェルスクリプトとの違いも記載しています。

また、Linuxの歴史や機能について、Windowsと比較をしながら説明している記事もありますので、Linuxについてあまり知らない方は、まずはこちらからご確認ください。

 

関連記事:LinuxとWindowsの違いとは?どちらに詳しいほうがいいのか

 

シェルとは

OSの構成についてお伝えしたあとに、シェルについての解説をします。

OSの構成

LinuxやWindows、 macOSと、OSにはさまざまな種類がありますが、どのOSもそれひとつでOSとして成立するものではなく、OSを構成するさまざまな要素が組み合わさって、はじめてOSとして機能するようになります。

OSの内部にはいろいろなソフトウェアが入っており、OSの中核をなす『カーネル』、UNIX系OSでメインメモリに常駐し特定の機能を提供する『デーモン』、OSを起動するための『ブートローダー』など、これらのソフトウェアが集まることで、OSとして作動できるようになります。

なかでもカーネルは、OS内のソフトウェアで唯一ハードウェアと接続ができ、ハードディスクやメモリなどのコンピュータ資源の管理、アプリケーションの実行やアクセスの管理などをする、OSの心臓や頭脳とも呼べる部分です。

とても重要な役割をになっているカーネルですが、カーネルは人間(ユーザー)からの指示(コマンド)を理解する機能を持っていません。そのため、ユーザーのコマンドをカーネルが理解し、OSに反映させるためには通訳が必要になります。その通訳の役割を果たすのが、今回ご紹介する『シェル』になっています。

シェルとは

カーネルを包む『殻』のような役割を果たすため『Shell』と名付けられました。

シェルはカーネルにコマンドを伝える通訳の役割とともに、カーネルの処理が終わった結果を通訳して、ユーザーに送り返す役割もあります。

また、ユーザーがコマンドを入力するにはアプリケーションが必要になり、その役割を果たすものを『ターミナル』といいます。ターミナルはデスクトップ画面のようにマウスで操作するものではなく、キーボード入力で操作をするCUI(Character-based User Interface)になっています。映画やアニメなどで目にすることのある、黒色で文字が羅列されている画面をイメージするとわかりやすいかもしれません。

以上を踏まえて、ユーザーがOSを操作するためにおこなう一連の処理の流れは、

『ユーザーがターミナルで操作→シェルが通訳→カーネルが処理→シェルがカーネルの処理結果を通訳→表示するものがあればユーザーのターミナル画面に表示』となり、端的に関係性を表すと『ユーザー⇄シェル⇄カーネル』となります。シェルがユーザーとカーネルの間に入っているお陰で、ユーザーはOSの操作ができるともいえます。

シェルの種類

Linuxにはたくさんのシェルがあり、自分好みのものを選択して利用することができます。ここでは4つピックアップをしてお伝えします。

sh

1977年から使われているシェルで、正式名称はBourne Shell(Bシェル)といいます。LinuxのもとになったOSのUNIXに標準搭載されていたため、古くから利用されてきました。しかし現在では、shは基本的な操作をすることしかできないので、利用されるケースは少なくなっています。

bash

Linuxでのデファクトスタンダードといえるシェルで、多くのLinuxディストリビューションに標準搭載されています。bashは『Bourne-again shell』の略称で、『生まれ変わったsh』として、shの機能をパワーアップさせた、上位互換のシェルだといえます。shと互換性を持ち、コマンド履歴などの機能があります。

ksh

UNIX系OS(LinuxはUNIX系OSのひとつ)で、bashと同じように標準搭載されることもあるシェルです。正式名称はKorn Shell(コーンシェル)といいます。kshもshをバージョンアップさせた、上位互換のシェルになってます。bashと同じようにヒストリー(コマンドの履歴呼び出し)やエイリアス(文字列の別名)などがありますが、bashのほうが多くの機能を搭載しています。

zsh

shやbash、kshなどの便利な機能を取り込んだシェルです。shとの互換性があるものもあり、macOSのCatalinaでは標準搭載のシェルとして利用されています。複数ユーザーの履歴共有、表示や操作などのカスタマイズが可能です。しかしながら、機能が充実しているがゆえに使いこなすためには時間がかかり、プログラムサイズも大きくなっています。

シェルとシェルスクリプト

『シェル』はユーザーからのコマンドをカーネルが理解するように通訳をするプログラムで、『シェルスクリプト』はカーネルに処理をさせるコマンドをひとつにまとめたファイルです。シェルスクリプトを作成し保存をしておけば、コマンドを再度作成することなく実行できるようになるため、業務の効率化につながります。

シェルスクリプトは、ファイルのうえから順番にコマンドが実行されるようになっています。また、記述したコマンドを即時実行できる特徴があるので、シェルはスクリプト言語に分類されています。そのため、シェルで実行ができるスクリプト言語=『シェルスクリプト』となっています。

加えて、シェルの種類によって文法は異なるものの、if 、caseの条件分岐、for、while、untilの繰り返し、変数や関数などの仕組みも持っています。

シェルとシェルスクリプトは別のものになりますので、混同しないように注意しましょう。

Linuxでのシェルの操作例

シェルの操作例を一部お伝えします。コマンドにはたくさんの種類がありますので、気になった方は『シェル コマンド 一覧』などで検索をしてみてください。

コマンド動作
lsファイルの一覧表示
cat (file)ファイルの内容表示
echo $0実行中のシェル確認
historyコマンドの履歴リストを表示
aliasエイリアスの設定

覚えておきたい便利なショートカット

シェルのデファクトスタンダードである、bashで利用できるショートカットをお伝えします。

カーソル移動

キー動作
Alt + F単語単位で右へカーソルを移動
Alt + B単語単位で右へカーソルを移動
Ctrl + F1個右へカーソルを移動
Ctrl + B1個左へカーソルを移動
Ctrl + A行頭へカーソルを移動
Ctrl + E行末へカーソルを移動

入力補完

コマンドやファイル名を途中まで入力してから、Tabキー押下でコマンドが補完され、候補がでてきます。

文字列操作

キー動作
Ctrl + Hカーソル位置の直前の1文字を削除
Ctrl + Dカーソル位置の直後の1文字を削除
Ctrl + Kカーソル位置から行末までを削除
Ctrl + Uカーソル位置から行頭までを削除
Ctrl + W直前の1単語を削除(単語境界は空白類)

まとめ

今回の記事のポイントは、以下の4つです。

 

①OSには複数のソフトウェアが内蔵されており、『カーネル』という中核がある。

②人間の指示(コマンド)をカーネルに通訳するために『シェル』が必要になる。

③シェルには複数の種類がある。

④『シェル』と『シェルスクリプト』は別物である。

 

シェルを使えるようになることで、ログの抽出やタスクの効率化、業務の自動化などができるようになります。エンジニアとしてのスキルアップにもつながるので、習得できるように励んでいきましょう。この記事が少しでもお役立てになれば幸いです。

フリーランスの案件をお探しの方はTechReachにご相談ください。

TechReachを運営する株式会社アールストーンはIT・Web業界特化で15年以上の実績がございます。

そのため、高単価・高品質な数多くの案件紹介が可能です。

また一人のコンサルタントが企業と求職者様の担当を行う「両面型エージェント」を採用しているため、あなたの希望に合う案件がきっと見つかるはずです。

TechReachを活用して、理想の案件を見つけましょう!

関連記事

カテゴリ