🎯 この章で学ぶこと

  • GUIとCLIの違い、そしてプロがあえて「黒い画面」を使う理由
  • ターミナル・シェル・コンソール・プロンプトという用語の正しい区別
  • 主なシェルの種類(bash・zsh・PowerShellなど)とOSごとの標準
  • 自分のPC(Windows / macOS / Linux)でターミナルを開く方法
  • コマンドの基本文法と、最初に覚えるべき操作(Tab補完・履歴・中断・man)

4.1 GUIとCLI — 2つの操作方法

私たちがコンピュータを操作する方法には、大きく2つのスタイルがあります。GUICLIです。まずこの違いをはっきりさせましょう。

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章)、そして末尾の $ がプロンプト記号です。プロンプトの記号には慣習があります。

✅ プロンプトより後ろを打つ

この教材のコマンド例では、先頭の $ は「ここはプロンプトです」という目印です。あなたが打つのは $ より後ろの部分だけで、$ 自体は入力しません。表示の下に続く文字は、多くの場合コマンドの実行結果です。

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
WindowsPowerShell(と、従来のcmd.exe)

今どのシェルを使っているかは、次のコマンドで確かめられます。Linux / macOSでは echo $SHELL が、ログイン時のシェルの場所を表示します。

$ echo $SHELL
/bin/zsh

この結果は「私はzshを使っている」という意味です。echo は「続く文字をそのまま表示する」コマンド、$SHELL は環境変数(第5章)で、これから何度も登場します。

💡 bashとzshはほぼ同じ感覚で使える

この章と第5章で学ぶ基本コマンド(lscd など)は、bashでもzshでもまったく同じように動きます。違いが表れるのは、設定ファイルや込み入ったスクリプトを書くようになってからです。まずは「bash系の使い方」を身につければ、macOSのzshでもLinuxのbashでも困りません。

4.4 ターミナルの開き方

知識だけでは身につきません。ここで実際に、あなたのPCでターミナルを開いてみましょう。OSごとに開き方が違います。

Windowsの場合

Windowsには複数の選択肢があります。迷ったらWindows Terminal(ターミナル)からPowerShellを開くのがおすすめです。

macOSの場合

標準のターミナル.appを使います。次のいずれかで開けます。

開くとzshのプロンプトが表示され、第5章のコマンドをそのまま試せます。

Linuxの場合

デスクトップ環境によって名前が違いますが(GNOME端末、Konsoleなど)、多くの環境で共通のショートカットが使えます。

どのOSでも、開いてプロンプトが出たら準備完了です。試しに、日付を表示する date コマンドを打ってEnterを押してみましょう。

$ date
2026年 7月 8日 水曜日 10:30:15 JST

結果が返ってきたら、あなたは今「シェルに命令を出し、その返事を受け取った」ことになります。これがターミナル操作のすべての基本です。

4.5 コマンドの基本文法

コマンドには決まった「文法」があります。多くのコマンドは、次の3つの要素の組み合わせでできています。

コマンド名  オプション  引数

具体例で見ましょう。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 -als --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は「再現性」の入口、コピペには覚悟を

CLIの最大の価値は、作業が文字として残り、そのまま再現できることです。手順書にコマンドを書いておけば、誰がやっても同じ結果になり、監査(いつ・誰が・何をしたか)にも耐えます。これが自動化(第5章・第7章)と運用の土台です。

一方で、CLIには取り返しのつかない力もあります。GUIならゴミ箱を経由するところ、CLIの削除は多くの場合即座に、確認なしで、元に戻せず実行されます(第5章の rm)。だからこそ鉄則は一つ、「意味を理解していないコマンドを実行しない」です。ネットで見つけたコマンドを、意味を確かめずコピペで貼り付けて sudo(管理者権限)で実行する——これは事故と攻撃の温床です。一行ずつ「これは何をするのか」を --helpman で確認する癖を、最初につけておきましょう。

まとめ

練習問題

問題 4-1

同僚に「ターミナルとシェルって同じものでしょ?」と聞かれました。両者の違いを、それぞれの役割が分かるように説明してください。

解答を見る

ターミナルは、文字を表示しキー入力を受け取る「画面・窓」そのもの(端末エミュレータというアプリ)です。シェルは、その中で打ち込んだ命令を解釈し、実際に実行するプログラム(bashやzsh、PowerShellなど)です。ターミナルが「器」、シェルが「中身」の関係で、私たちはターミナルという窓を通してシェルに命令を出しています。飲食店にたとえると、注文を書く受付がターミナル、注文を聞いて調理場に伝える店員がシェルです。

問題 4-2

ls -la /var/log というコマンドについて、「コマンド名」「オプション」「引数」がそれぞれどの部分かを指摘し、全体として何をする命令かを説明してください。

解答を見る
  • コマンド名:ls(ファイルの一覧を表示する)
  • オプション:-la(-l 詳細表示 と -a 隠しファイルも表示 をまとめたもの)
  • 引数:/var/log(一覧を表示する対象のフォルダ)

全体で「/var/log フォルダの中身を、隠しファイルも含めて、詳しい形式で一覧表示せよ」という命令になります。各要素は半角スペースで区切られています。

問題 4-3

あるコマンドを実行したところ、プロンプトが返ってこず、画面が止まったように見えます。(1)まず何を試すべきでしょうか。また(2)コマンドを実行したら command not found と表示されました。考えられる原因を2つ挙げてください。

解答を見る

(1) Ctrl + C を押します。実行中のコマンドを中断し、たいていの場合プロンプトに戻れます。ターミナルが固まったときの基本の脱出操作です。

(2) command not found は「そのコマンドが見つからない」という意味で、主な原因は次の2つです。①コマンド名のつづり間違い(例:sl と打ってしまった)。②そのコマンドがインストールされていない、あるいはシェルが探す場所(PATH。第5章)に置かれていない。まずはつづりを確認し、必要ならインストール状況を調べます。