音声スライド (クリックで展開/閉じる)
はじめに
- プロンプトから今の状態を読み取る
- 入力待ちと実行中を見分ける
- コマンドの構文(名前・オプション・引数)を知る
- 短い/長いオプションと結合表記を使い分ける
前の単元では、ターミナルとシェルが別物であることを学びました。この単元では、シェルが画面に表示する「プロンプト」の読み方と、コマンドを正しく組み立てるための基本的な構文を学びます。
プロンプトからは、誰として、どのコンピュータの、どこで操作しているのかを読み取れます。また、コマンドは「コマンド名」「オプション」「引数」という部品を空白で区切って並べたものです。
この単元を終えるころには、画面の状態を落ち着いて読み取り、オプション付きのコマンドを自信を持って打てるようになります。
プロンプトは入力待ちの合図
- プロンプト=シェルが表示する入力の合図
- 意味は「次のコマンドをどうぞ」
- 末尾の記号(
$)の後ろに文字を入力する - Enter キーを押すとコマンドが実行される
ターミナルを開くと、user@host:~$
のような文字列が表示され、その右側でカーソルが点滅しています。これが「プロンプト」です。プロンプトは、シェルが「次のコマンドを受け付ける準備ができました」と知らせる合図です。
コマンドは、プロンプトの末尾にある記号の後ろに入力します。入力し終えて Enter キーを押すと、シェルがその文字列をコマンドとして解釈し、実行します。
プロンプトの各部分

プロンプトは、いくつかの部品が決まった順序で並んでいます。@
の前がユーザー名、@ の後ろから :
の前までがホスト名、:
の後ろがカレントディレクトリ、つまり今いる場所です。最後の
$
は、操作しているのが一般ユーザーであることを示す記号です。
区切りに使われている @ と :
そのものに特別な意味はなく、部品どうしの境目を示す目印だと考えてください。
プロンプトが
taro@devbox:~$ なら
| 部分 | 例 | 読み取れること |
|---|---|---|
| ユーザー名 | taro |
誰として操作しているか |
| ホスト名 | devbox |
どのコンピュータを操作しているか |
| カレントディレクトリ | ~ |
今いる場所 |
| 末尾の記号 | $ / # |
一般ユーザーか管理者か |
たとえばプロンプトが taro@devbox:~$ なら、「taro
というユーザーとして、devbox
という名前のコンピュータで、ホームディレクトリにいて、一般ユーザーの権限で操作している」と読めます。ユーザー名やホスト名は環境ごとに異なるので、自分の画面と見比べてみてください。前の単元で使った
whoami
の結果は、プロンプトのユーザー名と一致するはずです。
ホスト名は、開発でとくに重要です。仮想マシンやコンテナを使うと、見た目は同じターミナルでも、中で操作しているコンピュータが別物になります。「今どのコンピュータに向かってコマンドを打っているのか」を、プロンプトで確かめる習慣をつけましょう。
記号 ~・$・#
の意味
~はホームディレクトリを表す記号- ホームディレクトリ=ユーザーごとの作業場所
- 場所を移動すると
~の部分が変わる $は一般ユーザー、#は管理者- この講座では基本的に
$の状態で操作する - 資料のコマンド例の先頭の
$は入力しない
プロンプトに出てくる
~(チルダ)は、「ホームディレクトリ」を表す記号です。ホームディレクトリとは、ユーザー一人ひとりに用意された自分専用の作業場所で、ログインした直後はここにいます。別の場所へ移動するとこの部分の表示が変わりますが、移動の方法や場所の書き方はモジュール
2 で学びます。
末尾の記号は、$ なら一般ユーザー、#
なら管理者として操作していることを示します。管理者についての詳しい話は後の単元で扱います。この講座では、基本的に
$ の状態で操作します。
なお、Web の記事や資料では、コマンド例の先頭に $ ls
のようにプロンプト記号が書かれていることがあります。この $
は「ここからがコマンドです」という目印なので、実際には入力しません。
入力待ちと実行中の見分け方

コマンドを実行すると、ターミナルは「入力待ち」と「実行中」の 2 つの状態を行き来します。プロンプトが表示されていれば入力待ち、表示されていなければ前のコマンドがまだ動いている最中です。コマンドが終わると、結果が表示され、その下に新しいプロンプトが現れます。
date
のようなコマンドは一瞬で終わるので「実行中」はほとんど見えませんが、処理に時間がかかるコマンドでは、しばらくプロンプトが戻ってきません。そのときは慌てて次のコマンドを打たず、プロンプトが戻るのを待ちましょう。実行中のコマンドを途中で止める方法は、次の単元で学びます。
コマンドの基本構文
- 形:
コマンド名 オプション 引数 - コマンド名:何をするか(
ls・echo・date) - オプション:動き方の調整(
-で始まる) - 引数:何に対して・何を使って行うか
- 各部分は空白で区切る
- オプションや引数は省略できることが多い
コマンドは、基本的に「コマンド名」「オプション」「引数」の順に、空白で区切って並べます。
コマンド名は、何をするかを表します。たとえば ls
は一覧を表示する、echo は文字を表示する、date
は日時を表示するコマンドです。オプションは、そのコマンドの動き方を調整する指定で、多くは
-
で始まります。引数は、コマンドが処理する対象や材料です。引数は「ひきすう」と読みます。
オプションや引数は、必要なときだけ付けます。date
のようにコマンド名だけで動くものも多くあります。
構文の例を見てみよう
実際に打ちながら、部品の組み合わせを確かめてみましょう。date
はコマンド名だけ、date -u はオプション -u
を付けて世界標準時(UTC)で表示します。
echo Hello の Hello
は引数です。echo Hello World では、Hello と
World の 2 つの引数を渡しています。
最後の date -u +%H:%M は、3
つの部品がすべてそろった形です。+%H:%M
は「時と分だけを表示して」という表示形式の指定で、date
に渡す引数です。このように、同じコマンドでもオプションや引数によって結果が変わります。
空白が区切りになる
- シェルは空白で入力を単語に区切って解釈する
ls -l→lsと-lの 2 語ls-l→ 1 語の知らないコマンド扱いecho Hello World→ 空白の数は関係ない- 単語の間には空白を 1 つ以上入れる
シェルは、入力された文字列を空白で区切り、最初の単語をコマンド名、残りをオプションや引数として受け取ります。そのため、空白の有無は結果を大きく左右します。
ls -l は ls と -l の 2
語なので正しく動きます。一方、空白を忘れて ls-l
と打つと、シェルは ls-l
という名前のコマンドを探し、見つからないというエラーを表示します。
逆に、echo Hello World
のように空白を複数入れても、区切りが 1
つ増えるわけではありません。表示は Hello World
になります。大切なのは「単語の間に空白があるかどうか」です。
短いオプションと長いオプション
| 種類 | 書き方 | ls の例 |
date の例 |
|---|---|---|---|
| 短いオプション | - + 1 文字 |
-a |
-u |
| 長いオプション | -- + 単語 |
--all |
--utc |
- 同じ行の短い形と長い形は同じ意味
- 短い形は打つのが速く、長い形は意味が読みやすい
オプションには、- に 1
文字を続ける「短いオプション」と、--
に単語を続ける「長いオプション」の 2 種類の書き方があります。たとえば
ls -a と ls --all
は、どちらも「すべて表示する」という同じ意味です。date -u
と date --utc も同じ結果になります。ls -a
で何が増えるのかは、単元 7 で詳しく学びます。
短い形は手早く打てるので、ふだんの操作に向いています。長い形は意味が一目でわかるので、後から読み返す場面に向いています。ただし、すべてのオプションに両方の形があるわけではありません。どんな形があるかは、次の単元で学ぶ調べ方で確認できます。
短いオプションの結合
短いオプションは、-l -a
のように別々に書く代わりに、-la と 1
つにまとめて書けます。これを結合表記と呼びます。-la と
-al
のように、並べる順序を変えても意味は同じです。ここでは出力の細かい読み方は気にせず、結合しても結果が同じになることだけ確かめてください。
長いオプションは結合できません。また、--all のつもりで
-all とハイフンを 1 つだけ書くと、シェルではなく
ls が -a、-l、-l
の結合だと解釈してしまいます。ハイフンが 1 つか 2
つかで意味が変わる点に注意しましょう。
なお、--
だけを単独で書くと「ここでオプションは終わり」という印になるコマンドが多くあります。今は、そういう書き方があるとだけ覚えておけば十分です。
やってみよう
whoami # 表示されたユーザー名がプロンプトのユーザー名と一致するか確認する
echo Hello Linux # コマンド echo に引数 Hello と Linux の 2 つを渡す(空白で区切られる)
date # オプションも引数も付けず、コマンド名だけで実行する
date --utc # 長いオプション(-- で始まる単語)を付けて UTC で表示する
date -u # 短いオプション(- と 1 文字)。4 の date --utc と同じ結果になる
ls -la # 短いオプション -l と -a を 1 つにまとめて指定する
ls-l # わざと空白を抜く → "ls-l: command not found" となり、1 つのコマンド名として扱われることを確認する最後に、学んだことを自分の手で確かめましょう。上から順に 1 行ずつ入力し、Enter を押してください。
コマンドを打つたびに、結果が表示された後で新しいプロンプトが戻ってくることを確認します。whoami
の結果がプロンプトのユーザー名と一致するか、date --utc と
date -u が同じ結果になるかも見比べてみましょう。
最後の ls-l
は、わざと空白を抜いたものです。エラーが出ても何も壊れないので安心してください。エラーの後にもプロンプトが戻り、次のコマンドを受け付ける状態になっていることを確かめましょう。
まとめ
- プロンプトは「入力待ち」の合図
user@host:~$= ユーザー名・ホスト名・場所・記号~はホーム、$は一般ユーザー、#は管理者- プロンプトが出ていない間は実行中
- 構文は
コマンド名 オプション 引数、空白で区切る - 短い
-aと長い--all、短い形は-laと結合可
この単元では、プロンプトの読み方とコマンドの基本構文を学びました。
プロンプトは、シェルが入力を待っている合図です。user@host:~$
の形から、誰として、どのコンピュータの、どこで、どんな権限で操作しているかを読み取れます。プロンプトが出ていないあいだは、前のコマンドがまだ実行中です。
コマンドは「コマンド名」「オプション」「引数」を空白で区切って並べます。オプションには
- で始まる短い形と --
で始まる長い形があり、短い形は -la
のように結合できます。
次の単元では、知らないコマンドの使い方を自分で調べる方法と、入力の手間を減らす便利な操作を学びます。