第0章 0-3 / サーバーを手に入れる

ターミナルの読み方

このページで叩くコマンドと到達点

前提:0-2が完了し、SSHでサーバーに接続しホームディレクトリ(~)にいる状態から始めます。このページではまず、画面に表示されているubuntu@ip-xxx:~$という文字列(プロンプト)が何を意味しているのかを読み解きます。そのうえでSET 1〜3、合計30行のコマンドを手打ちし、この講座の土台となる「コマンドの文法」と最初の主要コマンドを身につけます。

ここまでで環境構築はすべて終わりです。次のページからはいよいよ第1章、本格的なファイル操作のドリルに入ります。

プロンプトの各部を読み解く

ターミナルに表示されているubuntu@ip-172-31-0-1:~$のような文字列をプロンプト※1と呼びます。これは「今コマンドを打てますよ」というサインであり、同時に自分が今どういう状況にいるかを教えてくれる看板でもあります。学食の看板に「本日の日替わり」と書いてあるように、プロンプトにも意味のある情報が詰まっています。分解すると次の4つのパーツでできています。

  1. ubuntu ― 今ログインしているユーザー名。0-2で確認したwhoamiの結果と同じです。
  2. @ ― 「〜において」を表す区切り記号。「ubuntuというユーザーが、次に続くホストにいる」という意味です。
  3. ip-172-31-0-1 ― サーバー自身の名前(ホスト名)。0-2のhostnameで確認した値と一致します。
  4. :~$ ― コロンのあとの~は現在のディレクトリ(ここではホームディレクトリ)、最後の$は一般ユーザーとして操作していることを示す記号です。もし#になっていたら、それはroot(管理者)として操作している合図なので、より慎重な操作が求められます。この違いは2-1で詳しく扱います。

つまりプロンプト全体で「ubuntuというユーザーが、ip-172-31-0-1というサーバーの、ホームディレクトリにいて、一般ユーザー権限でコマンド待ちをしている」ということを一目で表しているわけです。この講座のターミナルブロックでも、タイトルバーに現在のユーザーとホストを表示しています。

POINT

コマンドの基本構造は「コマンド + オプション + 引数」です。たとえばls -l /etcなら、lsがコマンド本体、-lがコマンドの動作を変えるオプション(ハイフンで始まる指定)、/etcがコマンドの対象となる引数です。オプションと引数の順番は基本的に自由ですが、まずは「コマンド→オプション→引数」の並びで覚えておくと迷いません。

SET 1 ― 最初のコマンドを叩く

ubuntu@lightsail: ~
  1. $whoami
  2. ubuntu
  3. $hostname
  4. $date
  5. $date "+%Y年%m月%d日"
  6. $cal
  7. $echo 'Hello Linux'
  8. Hello Linux
  9. $echo $?
  10. 0
  11. $echo $USER
  12. $pwd
  13. /home/ubuntu
  14. $clear
解説 ― SET 1 で何をしたか

1行目のwhoami2行目のhostnameは0-2でも登場した、ユーザー名とサーバー名を確認するコマンドです。プロンプトに表示されている情報を、コマンドとしても確認できることがわかります。3行目のdateは現在の日時を表示します。4行目のdate "+%Y年%m月%d日"のように引数を渡すと、表示形式を自分好みに変えられます。date1つとっても、引数の与え方次第で表示結果が変わることが体感できます。

5行目のcalは今月のカレンダーを表示します。6行目のecho 'Hello Linux'は、シングルクォート(')で囲んだ文字列をそのまま画面に表示します。これはコマンドの基本形「コマンド + 引数」の一番わかりやすい例で、echoがコマンド、'Hello Linux'が引数です。

7行目のecho $?は少し特殊で、$?という特別な変数は「直前に実行したコマンドが成功したか失敗したか」を数字で保持しています。0が返ってくれば成功、それ以外の数字ならエラーがあったことを意味します。8行目のecho $USERも同じ仕組みで、今のユーザー名が入った環境変数※3を表示します。whoamiと同じ結果になりますが、コマンドの実行結果ではなく変数の中身を見ている点が違います。

9行目のpwdで現在地がホームディレクトリであることを確認したあと、10行目のclearで画面表示をすべて消してまっさらにします。データが消えるわけではなく、あくまで見た目をリセットするだけなので、コマンドが増えて画面が見づらくなったら気軽に打って構いません。

ゆみちゃん
ゆみ

clearで画面が真っ黒になったとき、最初は「あれ、壊れた!?」って焦ったなあ。大丈夫、これはただの画面掃除だから、ファイルが消えたりは絶対しないよ! 迷ったらとりあえずclearで画面をスッキリさせる、覚えておくと気持ちよく作業できるよ!

SET 2 ― 履歴を振り返る

ubuntu@lightsail: ~
  1. $pwd
  2. /home/ubuntu
  3. $history
  4. $history 5
  5. $echo 'second try'
  6. second try
  7. $!!
  8. second try
  9. $whoami
  10. $date +%Y-%m-%d
  11. $hostname -I
  12. $uptime -p
  13. $echo $HOSTNAME
解説 ― SET 2 で何をしたか

1行目のpwdで現在地がホームディレクトリのままであることを確認したうえで、2行目のhistoryを打つと、これまで自分が打ってきたコマンドの一覧が番号付きで表示されます。ターミナルは、あなたの操作をすべて記録しているのです。3行目のhistory 5のように数字を引数として渡すと、直近5件だけに絞って表示できます。これも「コマンド+引数」の一例です。

4行目でecho 'second try'を実行したあと、5行目の!!(エクスクラメーションマーク2つ)を打つと、直前に実行したコマンドがそっくりそのまま再実行され、出力例のように同じ結果が返ってきます。長いコマンドを何度も打ち直したいときに便利な省略記法で、詳しいショートカットは1-6でさらに扱います。

6行目のwhoami7行目のdate +%Y-%m-%dは、これまでのコマンドの復習です。date+%Y-%m-%dという引数を渡すと、日時の表示形式を自分で指定できます。このように、同じコマンドでもオプションや引数を変えるだけで、返ってくる結果を細かく調整できるのがLinuxコマンドの面白いところです。

8行目のhostname -I(大文字のアイ)は、ホスト名ではなくサーバーのIPアドレスを表示するオプションです。同じhostnameコマンドでも、オプション1つで表示内容がまったく変わる例として覚えておきましょう。9行目のuptime -pは、サーバーが起動してからの時間を「◯時間◯分」のような読みやすい形式(pretty)で表示します。10行目のecho $HOSTNAMEは、hostnameコマンドと同じ情報を環境変数として表示するもので、コマンドと環境変数の両方で同じ情報にたどり着けることが確認できます。

POINT

historyで表示される番号を使うと、!5のように「5番目のコマンドをもう一度実行する」という指定もできます。今すぐ使いこなす必要はありませんが、「番号で呼び出せる」という仕組みだけ頭の片隅に置いておいてください。

SET 3 ― 自分で調べる・システム情報を見る

ubuntu@lightsail: ~
  1. $man ls
  2. (qキーで一覧から抜けます)
  3. $ls --help
  4. $uname -a
  5. $lsb_release -a
  6. $cat /etc/os-release
  7. $echo $PATH
  8. $type whoami
  9. $exit
  10. logout
  11. $whoami
  12. $pwd
  13. /home/ubuntu
解説 ― SET 3 で何をしたか

1行目のman ls(manualの略)は、lsコマンドの正式な取扱説明書を画面いっぱいに表示する対話型コマンド※2です。矢印キーやスペースキーでスクロールでき、読み終えたらqキー(quitの頭文字)を押すと元のプロンプトに戻ります。この「qで抜ける」操作は、この講座でも度々登場するので覚えておきましょう。2行目のls --helpは、manより簡易な使い方の一覧をその場で表示するオプションで、多くのコマンドに共通して用意されています。この2つの調べ方は1-5でさらに深掘りします。

3行目のuname -aは、動いているLinuxカーネル(OSの中核部分)の詳しい情報を表示します。4行目のlsb_release -a5行目のcat /etc/os-releaseは、いずれも今使っているディストリビューションが「Ubuntu 24.04 LTS」であることを確認する方法です。同じ情報でも複数のコマンドで確認できることが多い、というのもLinuxらしさのひとつです。

6行目のecho $PATHは、コマンドを探しに行く場所の一覧が入ったPATH※4という環境変数を表示します。コロン区切りでいくつものディレクトリが並んで見えますが、詳しい仕組みは6-1で扱うので、今は「コマンドにも住所の一覧がある」とだけ知っておけば十分です。7行目のtype whoamiは、whoamiというコマンドが実際にどこにあるプログラムなのかを教えてくれます。$PATHに並んだ場所のどこかから、コマンドが見つかっていることが確認できます。

8行目のexitで一度サーバーとの接続を終了し、出力例のようにlogoutと表示されて接続が切れることを確認します。もう一度SSHで再接続し(0-2で紹介したブラウザまたはローカルPCどちらの方法でもかまいません)、9行目のwhoamiを打ってubuntuが返ってくれば接続は成功です。最後に10行目のpwdでホームディレクトリにいることを確認し、環境構築はすべて完了です。

ゆみちゃん
ゆみ

manコマンドを打ったまま画面が固まったように見えて焦る人、実はすごく多いんだよ! 固まってるんじゃなくて、qキーで抜けるのを待ってるだけだから安心して。もし操作がわからなくなったら、とりあえずqを押してみる。それだけで大抵の対話型コマンドからは脱出できるよ!

POINT

ここまでの3ページで、サーバーの契約・接続・ターミナルの基礎を一通り体験しました。次の第1章からは、いよいよ自分の手でディレクトリやファイルを作り、動かし、消していく実践的なドリルに入っていきます。

まとめ

0-3では、プロンプトの読み方とコマンドの基本文法を理解したうえで、最初の主要コマンドを一通り体験しました。このページで叩けるようになったコマンドを一覧にまとめます。

コマンド何をするか覚え方
whoami今のユーザー名を表示するwho am I
hostnameサーバー名を表示するhost(サーバー)の名前
date現在の日時を表示するdate=日付
cal今月のカレンダーを表示するcalendar
echo '文字列'指定した文字列をそのまま表示するecho=こだま(そのまま返す)
echo $?直前のコマンドの成否(0=成功)を表示する?=はてな(結果はどうだった?)
clear画面表示を消してリセットするclear=きれいにする
historyこれまで実行したコマンドの履歴を表示するhistory=履歴
!!直前のコマンドをもう一度実行するびっくり2つ=もう一回
man コマンド名コマンドの正式な取扱説明書を表示する(qで抜ける)manual=説明書
コマンド --helpコマンドの簡易な使い方を表示するhelp=助けて
uname -aカーネルなどシステム情報を表示するUnix name
lsb_release -aディストリビューションの情報を表示するLinux Standard Base
hostname -IサーバーのIPアドレスを表示する大文字のI=IPアドレス
uptime -p起動継続時間を読みやすい形式で表示するpretty(きれいな表示)
type コマンド名そのコマンドの実体がどこにあるかを表示するtype=種類を調べる
exit接続・シェルから抜けるexit=出口

次のページ「1-1. ファイルシステムを歩く ― pwd・ls・cd」からは、いよいよ第1章がスタートします。ファイルシステムの中を自分の足で歩き回る感覚を、じっくり身につけていきましょう。

脚注 ─ 用語解説
  1. プロンプト … ターミナルがコマンド入力を待っている状態を示す文字列。ユーザー名・ホスト名・現在地・権限の種類などの情報を含む。
  2. 対話型コマンド … 実行すると画面いっぱいの表示に切り替わり、キー操作で操作しながら進める種類のコマンド。manlessなどが代表例。
  3. 環境変数 … システムやシェルがあらかじめ用意している、値を入れておく箱。$HOME$USERなどがあり、詳しくは6-1で扱う。
  4. PATH … コマンドの実体(プログラム本体)を探しに行くディレクトリの一覧が入った環境変数。コマンドを打つとこの一覧の中から順番に探される。