利用者が入力したコマンドを解釈してOSに伝える仲介プログラム。
シェルとは、利用者とOS(基本ソフト)の間に立つ仲介プログラムです。利用者がキーボードで打ち込んだコマンド(命令文)を読み取り、その意味を解釈して、OSの中核であるカーネル(=ハードウェアを直接動かす中心部分のこと)に処理を依頼します。
処理が終わると、その結果を受け取って画面に表示するところまでがシェルの役目です。上の図解の通り、「入力 → 解釈 → 依頼 → 結果を返す」という流れを担当します。
身近な例で考えると、レストランのウェイターに似ています。お客(利用者)の注文(コマンド)を受け取り、厨房(カーネル)に伝え、できあがった料理(結果)をお客のテーブルに運ぶ──この「間を取り持つ役」がシェルです。
シェルにはいくつもの種類があり、使うOSによって標準のものが異なります。代表的なシェルは次のとおりです。
・bash:Linuxで長く標準だった定番のシェル
・zsh:補完機能などが強化された高機能シェル(最近のmacOS標準)
・sh:最も基本的な古くからあるシェル
・PowerShell:Windows向けの高機能シェル
・コマンドプロンプト(cmd):Windowsの伝統的なシェル
どれも「コマンドを解釈してOSに伝える」という基本的な役割は同じですが、使えるコマンドの書き方や便利機能に違いがあります。最初はbashまたはzshを覚えておけば十分です。
シェルが必要な理由は、カーネル(OSの中核)が人間の言葉を直接理解できないからです。カーネルは機械語(コンピュータが直接実行できる数字の命令)しか理解しません。人間がいきなり機械語を書くのは非常に難しいので、その間を取り持つ「通訳係」が必要になります。
シェルは人間が書いたコマンド(例:「ファイル一覧を表示しろ」という意味の命令文)を解釈して、それをカーネルが理解できる形に変えて伝えます。
・カーネルは速くて強力だが、直接触るには専門知識が必要
・シェルが「人が読める命令」と「機械の命令」を橋渡しする
・おかげで人間は難しい内部の仕組みを知らなくてもOSを操作できる
シェルは名前のとおり「殻(Shell)=外側の覆い」という意味で、カーネルを包んで利用者に使いやすい操作の窓口を提供する、という役割を名前で表しています。
シェルはコマンドインタプリタ(=命令を1行ずつ解釈して実行するプログラムのこと)とも呼ばれます。インタプリタとは「通訳者」という意味で、入力を受け取るたびにすぐ解釈・実行するのが特徴です。
シェルがコマンドを処理する流れは次のとおりです。
・①入力:利用者がキーボードでコマンドを打ち込む
・②解釈:シェルが命令の意味(何をしろ・どこに・どんなオプションで)を解析する
・③実行依頼:解析した内容をカーネルに伝えて処理を依頼する
・④結果表示:カーネルから戻ってきた結果を画面に表示する
この仕組みのおかげで、利用者はコマンドを打ちながらすぐに結果を確認しながら作業を進められます。複数のコマンドを組み合わせたり、繰り返し実行するスクリプト(=命令をまとめたファイルのこと)を作ったりと、応用が広い点もシェルの強みです。
シェルが主に提供するのはCLI(Command Line Interface=文字でコマンドを打って操作する方式)です。これに対し、アイコンやボタンをマウスで操作する視覚的な方式をGUI(Graphical User Interface)と呼び、両者はよく対比されます。
それぞれの向き不向きは次のとおりです。
・CLI(CUI):コマンドを並べたスクリプト(=処理の手順を書いたファイルのこと)で操作をまとめられるため、自動化に強い
・GUI:見た目で分かりやすく、初心者でも直感的に操作しやすい
例えば「100個のファイルの名前を一括で変える」ような作業は、GUIで1個ずつクリックするより、CLIでコマンドをひとまとめにして実行するほうが圧倒的に速く、ミスも減らせます。
Q1. 利用者が入力したコマンドを解釈し、OSの中核(カーネル)に処理を依頼する仲介プログラムはどれか。
Q2. 次のうち、シェル(コマンドインタプリタ)に該当するものの組み合わせはどれか。
Q3. CLI(文字でコマンドを打って操作する方式)の特徴として最も適切なものはどれか。