シェル・コマンドラインとは(全体像)
シェルは、OSに「これをやって」と文字で命令するための窓口のこと。打ち込んだ命令(コマンド)をOSに伝えて実行させる。
身近にたとえると、レストランでの注文のしかただ。GUI(マウス操作)は「ウェイターに頼む」ようなもの、シェル(コマンドライン)は「自分で厨房に入って直接作る」ようなもの。慣れると速く、自動化もしやすい。
押さえるのは、シェルにはいくつか種類があり、OSごとに標準が違うということ。
詳しく:主要シェルとパイプ・リダイレクトだけ覚えれば戦える
ここが記事の心臓部。まず主要なシェルを見ましょう。
主要なシェル
| OS | 標準のシェル | ひとこと |
|---|---|---|
| Linux | Bash | 標準で互換性が高い |
| macOS | Zsh | 2019年以降の標準(補完が強い) |
| Windows | PowerShell | .NETと統合・cmdより新しい |
ここで一番のひっかけが「macOSのシェルは今もBash」という誤解。2019年以降のmacOSは、標準のシェルがZshに変わっています。
次に、シェルでよく使う2つの記号、パイプ「|」とリダイレクト「>」。
パイプとリダイレクト
| 記号 | はたらき | 例 |
|---|---|---|
| パイプ「|」 | 前のコマンドの出力を、次のコマンドの入力につなぐ | `ls | grep .log` |
| リダイレクト「>」 | コマンドの出力をファイルへ書き出す | `echo hello > out.txt` |
パイプ「|」は、前のコマンドの結果を次のコマンドに渡すしくみです。たとえば「ファイル一覧を出す→そこから.logだけ取り出す」を1行でつなげます。ここで2つめのひっかけが「|はORの意味」という誤解。シェルの「|」はパイプで、論理ORは「||」と2つ重ねます。
リダイレクト「>」は、画面に出るはずの結果をファイルへ書き出すしくみです。これらを組み合わせたものをシェルスクリプトとしてファイルに並べれば、作業を自動化できます。
わかりやすく言い換えると
要するに、厨房のたとえで覚えるとラクです。
①シェルの種類 … Bash(Linux)、Zsh(macOSは今これ)、PowerShell(Windows)
②パイプ「|」 … 前の料理を次の工程に渡す(ORではない・ORは「||」)
③リダイレクト「>」 … 出来た料理を皿(ファイル)に盛る
つまり、「macOSは今はZsh」「|はパイプ(ORではない)」、この2点が試験の急所です。
試験のツボ
🔴 一番出る:主要なシェル
①Bash(Linux標準)/Zsh(macOSの標準・2019年以降)
②PowerShell(Windows・.NET統合)
🔴 次に出る:パイプ「|」
①パイプは前のコマンドの出力を次のコマンドの入力につなぐ
②「|」はパイプであり、論理ORは「||」(2つ重ねる)
🟡 押さえると安定:リダイレクトとシェルスクリプト
①リダイレクト「>」は出力をファイルへ書き出す(「<」は入力をファイルから)
②コマンドを並べたシェルスクリプトで作業を自動化できる
よくある間違い
①「macOSのシェルは今もBashである」→ ✗ 2019年以降のmacOSは標準のシェルがZsh。Bashも残るが既定が変わった。
②「パイプ『|』は論理ORの意味である」→ ✗ シェルの「|」はパイプ(前の出力を次の入力へ渡す)。論理ORは「||」と2つ重ねる。
③「リダイレクト『>』は入力をファイルから読み込む記号である」→ ✗ 「>」は出力をファイルへ書き出す。入力をファイルから読むのは「<」。
試験での出題パターン
実際の問題でたしかめてみよう。
オリジナル問題1(主要なシェル)
シェルに関する次の記述のうち、正しいものはどれか。
- シェルは紙に印刷する装置のことで、OSへの命令とは無関係なものだとされているものだ
- シェルは1種類しかなく、OSによって標準が変わることはないものだとされているものだ
- LinuxはBash、macOSは今はZsh、WindowsはPowerShellが代表だ
- macOSの標準シェルは今もBashで、Zshに変わったことはないものだとされているものだ
解答は 3 ですよ。
Linuxの標準はBash、macOSの標準は今はZsh、WindowsはPowerShellが代表ですね。2019年以降のmacOSはZshが標準です。
選択肢1の「印刷する装置」、選択肢2の「1種類しかない」、選択肢4の「macOSは今もBash」はどれも誤りですよ。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 印刷する装置ではない |
| 2 | ✗ | OSごとに標準が違う |
| 3 | ✓ | Bash・Zsh・PowerShellの対応が正しい |
| 4 | ✗ | macOSは今はZsh |
オリジナル問題2(パイプ)
シェルのパイプ「|」に関する次の記述のうち、正しいものはどれか。
- パイプ「|」は論理ORの意味で、2つの条件のどちらかを満たすかを調べる記号である
- パイプ「|」は紙に印刷する手順のことで、コマンドの連結とは無関係なものだとされている
- パイプ「|」はコマンドを必ず1つに減らす記号で、出力を渡すことはないものだとされている
- パイプ「|」は前のコマンドの出力を次のコマンドの入力につなぐ記号で、ORは「||」だ
解答は 4 ですよ。
パイプ「|」は前のコマンドの出力を次のコマンドの入力につなぐ記号で、論理ORは「||」と2つ重ねますね。料理を次の工程へ渡すイメージです。
選択肢1の「論理OR」、選択肢2の「印刷する手順」、選択肢3の「1つに減らす」はどれも誤りですよ。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 論理ORは「||」 |
| 2 | ✗ | 印刷する手順ではない |
| 3 | ✗ | 出力を次へ渡す |
| 4 | ✓ | パイプは出力を次の入力へ渡す |
オリジナル問題3(リダイレクト)
シェルのリダイレクト「>」に関する次の記述のうち、正しいものはどれか。
- リダイレクト「>」は出力をファイルへ書き出す記号で、入力を読むのは「<」のほうである
- リダイレクト「>」は入力をファイルから読み込む記号で、出力には使えないものだとされている
- リダイレクト「>」は紙に印刷する装置のことで、ファイルとは無関係なものだとされている
- リダイレクト「>」はコマンドを必ず止める記号で、ファイルの操作はできないものだとされる
解答は 1 ですよ。
リダイレクト「>」は出力をファイルへ書き出す記号で、入力を読むのは「<」ですね。出来た料理を皿(ファイル)に盛るイメージです。
選択肢2の「入力を読み込む」、選択肢3の「印刷する装置」、選択肢4の「コマンドを止める」はどれも誤りですよ。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✓ | 「>」は出力をファイルへ・「<」は入力 |
| 2 | ✗ | 入力を読むのは「<」 |
| 3 | ✗ | 印刷する装置ではない |
| 4 | ✗ | コマンドを止める記号ではない |
まとめ
押さえどころ
- 🔴 主要なシェル = Bash(Linux標準)/Zsh(macOSの標準・2019年以降)/PowerShell(Windows)。
- 🔴 パイプ「|」 = 前のコマンドの出力を次の入力につなぐ。論理ORは「||」(2つ重ねる)。
- 🟡 リダイレクト = 「>」は出力をファイルへ、「<」は入力をファイルから。並べればシェルスクリプトで自動化。
次に学ぶ
- OS(オペレーティングシステム) ── シェルが対話する相手、カーネルを含むOSの構成と役割。
- システムコール ── シェルのコマンドの先で、OSに機能を頼むしくみ。
執筆: SikakuQuest編集部