第2部 ターミナルとシェル
第4章 ターミナル入門 — CLIとシェルの世界
映画やドラマで、技術者が「黒い画面」に文字を打ち込む場面を見たことがあるでしょう。あれがターミナルです。マウスを使わず、文字で命令する——最初はとっつきにくく見えますが、仕組みが分かれば、GUIよりずっと速く、正確に、そして自動で仕事をこなせる強力な道具です。この章では、コマンドを1つも知らない状態から「自分のPCでターミナルを開き、最初の一行を打つ」ところまで、ゆっくり歩いていきます。
🎯 この章で学ぶこと
- GUIとCLIの違い、そしてプロがあえて「黒い画面」を使う理由
- ターミナル・シェル・コンソール・プロンプトという用語の正しい区別
- 主なシェルの種類(bash・zsh・PowerShellなど)とOSごとの標準
- 自分のPC(Windows / macOS / Linux)でターミナルを開く方法
- コマンドの基本文法と、最初に覚えるべき操作(Tab補完・履歴・中断・
man)
4.1 GUIとCLI — 2つの操作方法
私たちがコンピュータを操作する方法には、大きく2つのスタイルがあります。GUIとCLIです。まずこの違いをはっきりさせましょう。
- GUI(Graphical User Interface:グラフィカル・ユーザー・インターフェイス) — アイコンやボタン、ウィンドウをマウスでクリックして操作する方式。WindowsやmacOSのデスクトップ、スマホの画面がこれです。見て、選ぶ操作
- CLI(Command Line Interface:コマンドライン・インターフェイス) — キーボードから文字の命令(コマンド)を打ち込んで操作する方式。覚えて、打つ操作
GUIは直感的で、初めてのアプリでもなんとなく触れます。一方CLIは、コマンドを知らないと何もできません。では、なぜプロのエンジニアやIT担当者は、わざわざ覚えることの多いCLIを好んで使うのでしょうか。理由は4つあります。
| CLIの強み | どういうことか |
|---|---|
| 速い | マウスでフォルダを次々開かなくても、一行で目的地に飛べる。慣れると操作がGUIより圧倒的に速い |
| 自動化できる | 打ったコマンドをファイルにまとめれば「スクリプト」になり、同じ作業を何百回でも自動で繰り返せる(第5章・第7章) |
| 遠隔操作に向く | サーバーは多くが画面のない機械。ネットワーク越し(SSH。第11章)に文字だけでどこからでも操作できる |
| 記録が残る | 「どのコマンドを実行したか」が文字として残る。手順を他人に正確に伝えられ、間違いも再現・検証できる |
たとえば「フォルダを100個作る」という作業を考えてみてください。GUIなら右クリック→新規フォルダ→名前入力……を100回繰り返す苦行です。CLIなら、次のたった一行で終わります(意味は第5章で学びます。今は「一行で100個作れる」という感覚だけつかんでください)。
$ mkdir data01 data02 data03 ... data100
「CLIのほうが偉い」わけではありません。写真の整理やお絵かきはGUIのほうが向いています。大切なのは適材適所で、繰り返し作業・自動化・サーバー管理といった場面でCLIが強い、ということです。プロは両方を使い分けています。
4.2 用語の整理 — ターミナル・シェル・コンソール・プロンプト
ここは初心者が最も混同する場所です。「ターミナル」「シェル」「コンソール」「プロンプト」——似た言葉が飛び交いますが、それぞれ役割が違います。料理にたとえながら、しっかり区別しましょう。
| 用語 | 正体 | たとえると |
|---|---|---|
| ターミナル(端末) | 文字を表示し、キー入力を受け取る画面・窓そのもの。正確には「端末エミュレータ」というアプリ | 注文票を書く窓口・受付 |
| シェル | 打ち込んだ命令を解釈して実行するプログラム。bashやzsh、PowerShellがこれ | 注文を聞いて調理場に伝える店員 |
| コンソール | 本来は機械に直結した操作卓を指す言葉。今はターミナルとほぼ同義で使われることが多い | 受付とほぼ同じ意味で使われる |
| プロンプト | 「命令をどうぞ」という入力待ちの合図の記号。$ や > など | 「ご注文は?」の一言 |
つまり、あなたが開く「窓」がターミナル、その中で命令を受け取って実際に動かす「頭脳」がシェルです。ターミナルは器、シェルは中身、と覚えるとよいでしょう。ターミナルを開くと、たいてい次のような一行が表示されます。この待機中の記号がプロンプトです。
taro@my-pc:~$
この行には情報が詰まっています。taro はログイン中のユーザー名、my-pc はコンピュータ名、~ は現在いる場所(ホームディレクトリ。第5章)、そして末尾の $ がプロンプト記号です。プロンプトの記号には慣習があります。
$… 一般ユーザーで操作中(Linux / macOSの標準的なシェル)#… 管理者(root)で操作中。強い権限を持つので要注意(第3章の権限、第5章のsudo)>… Windowsのコマンドプロンプトや、コマンドの続きを待っている状態。PowerShellはPS C:\>のように表示
この教材のコマンド例では、先頭の $ は「ここはプロンプトです」という目印です。あなたが打つのは $ より後ろの部分だけで、$ 自体は入力しません。表示の下に続く文字は、多くの場合コマンドの実行結果です。
4.3 主なシェルの種類
シェルには何種類もあり、OSによって標準が異なります。まずは「そういうものがある」と眺めてください。実務でよく出会うのはbash・zsh・PowerShellの3つです。
| シェル | 読み | 特徴 |
|---|---|---|
| sh | エスエイチ | 最も古い基本のシェル(Bourne Shell)。シンプルで、スクリプトの共通語として今も使われる |
| bash | バッシュ | shを拡張した定番。長年Linuxの標準で、世に出ているコマンド例の多くがbash前提 |
| zsh | ゼットシェル | bash互換で補完やカスタマイズが強力。現在のmacOSの標準シェル |
| fish | フィッシュ | 初心者に優しい賢い補完・色付けが売り。ただし文法がbashと少し違う |
| cmd.exe | コマンドプロンプト | Windows古来のシェル。今も残るが、新規の管理作業ではPowerShellが主役 |
| PowerShell | パワーシェル | Windowsの現代的なシェル。文字ではなく「オブジェクト」を扱うのが最大の特徴(第6章・第7章) |
OSごとに、最初から使える標準のシェルは次のとおりです。
| OS | 標準のシェル |
|---|---|
| Linux(多くのディストリビューション) | bash |
| macOS(2019年以降) | zsh |
| Windows | PowerShell(と、従来のcmd.exe) |
今どのシェルを使っているかは、次のコマンドで確かめられます。Linux / macOSでは echo $SHELL が、ログイン時のシェルの場所を表示します。
$ echo $SHELL
/bin/zsh
この結果は「私はzshを使っている」という意味です。echo は「続く文字をそのまま表示する」コマンド、$SHELL は環境変数(第5章)で、これから何度も登場します。
この章と第5章で学ぶ基本コマンド(ls や cd など)は、bashでもzshでもまったく同じように動きます。違いが表れるのは、設定ファイルや込み入ったスクリプトを書くようになってからです。まずは「bash系の使い方」を身につければ、macOSのzshでもLinuxのbashでも困りません。
4.4 ターミナルの開き方
知識だけでは身につきません。ここで実際に、あなたのPCでターミナルを開いてみましょう。OSごとに開き方が違います。
Windowsの場合
Windowsには複数の選択肢があります。迷ったらWindows Terminal(ターミナル)からPowerShellを開くのがおすすめです。
- Windows Terminal(ターミナル) — スタートボタンを右クリック →「ターミナル」。複数のシェルをタブで切り替えられる新しいアプリ。Windows 11では標準搭載
- PowerShell — スタートメニューで「PowerShell」と検索して起動。Windows管理の主力(第6章)
- WSL(Windows Subsystem for Linux) — Windowsの中でLinux(bash)をそのまま動かせる仕組み。
wslと打つと起動。本書の第5章をWindows上で試したいときに便利
macOSの場合
標準のターミナル.appを使います。次のいずれかで開けます。
- 「アプリケーション」→「ユーティリティ」→「ターミナル.app」
- Spotlight検索(
⌘(command)+スペース)で「ターミナル」と入力してEnter
開くとzshのプロンプトが表示され、第5章のコマンドをそのまま試せます。
Linuxの場合
デスクトップ環境によって名前が違いますが(GNOME端末、Konsoleなど)、多くの環境で共通のショートカットが使えます。
- キーボードショートカット
Ctrl + Alt + T - アプリ一覧から「端末」「Terminal」を探して起動
どのOSでも、開いてプロンプトが出たら準備完了です。試しに、日付を表示する date コマンドを打ってEnterを押してみましょう。
$ date
2026年 7月 8日 水曜日 10:30:15 JST
結果が返ってきたら、あなたは今「シェルに命令を出し、その返事を受け取った」ことになります。これがターミナル操作のすべての基本です。
4.5 コマンドの基本文法
コマンドには決まった「文法」があります。多くのコマンドは、次の3つの要素の組み合わせでできています。
コマンド名 オプション 引数
- コマンド名 — 何をするか。「動詞」にあたる部分(例:
ls= 一覧表示、cd= 移動) - オプション — どう動かすか。動作を細かく指定する「調味料」。
-で始まる - 引数(ひきすう) — 何に対して。対象となるファイル名やフォルダ名などの「目的語」
具体例で見ましょう。ls は「そこにあるファイルの一覧を表示する」コマンドです。これに詳細表示のオプションと、対象フォルダを足すと、次のようになります。
$ ls -l /home
合計 8
drwxr-xr-x 5 taro taro 4096 7月 8 10:00 taro
drwxr-xr-x 3 hana hana 4096 7月 1 09:12 hana
この一行は、コマンド名 ls ・オプション -l(詳しく表示せよ)・引数 /home(この場所を対象に)という構造です。「/home フォルダの中身を、詳しい形式で一覧表示せよ」という意味になります。要素の間は半角スペースで区切ります。ここを全角スペースにするとエラーになるので注意してください。
オプションには2つの書き方がある
オプションには、短い形式と長い形式の2種類があります。
| 形式 | 書き方 | 例 | 特徴 |
|---|---|---|---|
| 短縮形 | - + 一文字 | ls -a | 打つのが速い。慣れた人向け |
| 長い形式 | -- + 単語 | ls --all | 意味が読み取りやすい。スクリプトで重宝 |
ls -a と ls --all はまったく同じ動作です(隠しファイルも含めて表示)。短縮形は複数まとめて書けるのも便利で、-l と -a は -la のように連結できます。
$ ls -l -a
$ ls -la # ↑と同じ意味。まとめて書ける
行末の # より後ろはコメントで、シェルは無視します。人間向けのメモを書くのに使います。
「My Documents」のように名前にスペースを含むファイルを扱うときは、そのまま書くと2つの引数と誤解されます。"My Documents" のように引用符で囲むか、My\ Documents のようにスペースの前に \ を付けて、「これで一つの名前だ」と伝えます。
4.6 最初に覚える操作 — これだけで一気に楽になる
コマンドを一文字ずつ手打ちしていては疲れますし、間違いも増えます。ターミナルには、作業を劇的に楽にする機能が備わっています。最初に覚えるべきものを紹介します。
カレントディレクトリ — 「今どこにいるか」
ターミナルでは、常に自分がどこかのフォルダの中に立っていると考えます。この「今いる場所」をカレントディレクトリ(作業ディレクトリ)と呼びます。pwd(print working directory)で現在地を確認できます。
$ pwd
/home/taro
ファイル名だけでコマンドを打つと、この現在地が基準になります。「どこにいるか」を意識することが、ターミナル操作の第一歩です(第5章で詳しく歩き回ります)。
Tab補完 — 途中まで打ってTabキー
長いファイル名やコマンド名を全部打つ必要はありません。途中まで打ってTabキーを押すと、シェルが残りを補ってくれます。doc まで打ってTabを押すと、Documents/ と自動で埋まる、といった具合です。候補が複数あるときは、もう一度Tabを押すと一覧が出ます。タイプミスを防ぎ、速さも上がる、最も使う機能です。
↑キーで履歴 — 前のコマンドを呼び戻す
一度打ったコマンドは記録されています。↑キーを押すと、直前に実行したコマンドが順に呼び出されます。同じコマンドをもう一度打ちたいとき、長いコマンドを少しだけ直して再実行したいときに便利です。↓キーで新しいほうへ戻れます(履歴の一覧は第5章の history で扱います)。
覚えておきたいキー操作
| キー | 働き |
|---|---|
Tab | コマンド名・ファイル名を補完する |
↑ / ↓ | コマンド履歴をさかのぼる / 進める |
Ctrl + C | 実行中のコマンドを中断する。「止まらない・固まった」ときの脱出ボタン |
Ctrl + L | 画面をクリアする(clear コマンドと同じ) |
Ctrl + A / Ctrl + E | カーソルを行頭 / 行末へ一気に移動 |
Ctrl + D | 入力の終わり。シェルの終了(ログアウト)にも使う |
特に Ctrl + C は必ず覚えてください。コマンドが終わらずプロンプトが返ってこないとき、慌てずに Ctrl + C を押せば、たいてい中断してプロンプトに戻れます。画面が文字で埋まって見づらくなったら、clear と打つか Ctrl + L でまっさらにできます。
$ clear
4.7 調べ方と、詰まったときの作法
コマンドは無数にあり、すべて暗記する必要はありません。プロも日常的に「調べながら」使っています。大事なのは自分で調べる手段を持っておくことです。
--help — 手早く使い方を見る
多くのコマンドは、--help オプションを付けると使い方の要約を表示します。「このコマンド、どんなオプションがあったかな」というときの最速の確認方法です。
$ ls --help
使用法: ls [オプション]... [ファイル]...
-a, --all . で始まる要素を無視しない
-l 詳細な情報を一覧で表示する
-h, --human-readable サイズを読みやすい単位で表示 (例 1K 234M 2G)
...
man — 正式なマニュアルを読む
より詳しい正式な説明書が読みたいときは man(manual)を使います。man ls と打つと、ls の完全な取扱説明書が開きます。
$ man ls
マニュアル画面は上下キーやスペースキーでスクロールし、q キーで閉じます(q = quit)。「開いたはいいが抜け方が分からない」で固まる人が多いので、q で戻ることを覚えておいてください。
エラーメッセージは「敵」ではなく「案内」
コマンドを間違えると、シェルは赤い文字などでエラーを返します。初心者はここで身構えてしまいますが、エラーメッセージは原因を教えてくれる案内文です。落ち着いて読めば、たいてい対処できます。よく出るものを挙げます。
| メッセージ | 意味 | よくある原因 |
|---|---|---|
command not found | そのコマンドが見つからない | コマンド名のつづり間違い、未インストール(第5章のPATHも関係) |
No such file or directory | そのファイル・フォルダがない | 名前の打ち間違い、いる場所(カレントディレクトリ)の勘違い |
Permission denied | 権限がなくて実行できない | アクセス権の不足。sudo が必要な場合も(第3章・第5章) |
エラーが出たら、まずメッセージをそのまま読む、次にコマンドとファイル名のつづりを見直す、それでも分からなければそのメッセージを検索する——この順番が基本の作法です。
CLIの最大の価値は、作業が文字として残り、そのまま再現できることです。手順書にコマンドを書いておけば、誰がやっても同じ結果になり、監査(いつ・誰が・何をしたか)にも耐えます。これが自動化(第5章・第7章)と運用の土台です。
一方で、CLIには取り返しのつかない力もあります。GUIならゴミ箱を経由するところ、CLIの削除は多くの場合即座に、確認なしで、元に戻せず実行されます(第5章の rm)。だからこそ鉄則は一つ、「意味を理解していないコマンドを実行しない」です。ネットで見つけたコマンドを、意味を確かめずコピペで貼り付けて sudo(管理者権限)で実行する——これは事故と攻撃の温床です。一行ずつ「これは何をするのか」を --help や man で確認する癖を、最初につけておきましょう。
まとめ
- GUIは「見て選ぶ」、CLIは「覚えて打つ」。CLIは速い・自動化できる・遠隔操作に向く・記録が残る
- ターミナルは「窓(器)」、シェルは命令を解釈する「頭脳(中身)」。プロンプト(
$#>)は入力待ちの合図 - 標準シェルはLinuxがbash、macOSがzsh、WindowsがPowerShell。基本コマンドはbashでもzshでも同じ
- コマンドは「コマンド名 オプション 引数」の3要素。オプションには短縮形(
-a)と長い形式(--all)がある - Tab補完・↑履歴・
Ctrl+C中断・--help/manを覚えれば、操作はぐっと楽になる - エラーメッセージは案内文。意味の分からないコマンドをコピペ実行しないことが、安全の第一歩
練習問題
同僚に「ターミナルとシェルって同じものでしょ?」と聞かれました。両者の違いを、それぞれの役割が分かるように説明してください。
解答を見る
ターミナルは、文字を表示しキー入力を受け取る「画面・窓」そのもの(端末エミュレータというアプリ)です。シェルは、その中で打ち込んだ命令を解釈し、実際に実行するプログラム(bashやzsh、PowerShellなど)です。ターミナルが「器」、シェルが「中身」の関係で、私たちはターミナルという窓を通してシェルに命令を出しています。飲食店にたとえると、注文を書く受付がターミナル、注文を聞いて調理場に伝える店員がシェルです。
ls -la /var/log というコマンドについて、「コマンド名」「オプション」「引数」がそれぞれどの部分かを指摘し、全体として何をする命令かを説明してください。
解答を見る
- コマンド名:
ls(ファイルの一覧を表示する) - オプション:
-la(-l詳細表示 と-a隠しファイルも表示 をまとめたもの) - 引数:
/var/log(一覧を表示する対象のフォルダ)
全体で「/var/log フォルダの中身を、隠しファイルも含めて、詳しい形式で一覧表示せよ」という命令になります。各要素は半角スペースで区切られています。
あるコマンドを実行したところ、プロンプトが返ってこず、画面が止まったように見えます。(1)まず何を試すべきでしょうか。また(2)コマンドを実行したら command not found と表示されました。考えられる原因を2つ挙げてください。
解答を見る
(1) Ctrl + C を押します。実行中のコマンドを中断し、たいていの場合プロンプトに戻れます。ターミナルが固まったときの基本の脱出操作です。
(2) command not found は「そのコマンドが見つからない」という意味で、主な原因は次の2つです。①コマンド名のつづり間違い(例:sl と打ってしまった)。②そのコマンドがインストールされていない、あるいはシェルが探す場所(PATH。第5章)に置かれていない。まずはつづりを確認し、必要ならインストール状況を調べます。