第1章 1-1 / ファイル操作の基本

ファイルシステムを歩く ― pwd・ls・cd

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

前提:0-3までが完了し、ubuntuユーザーでログイン直後の状態から始めます。今の自分がどこにいるかを確認するpwd、その場所にある物を一覧するls、そして別の場所へ移動するcd。この3つのコマンドは、Linuxを大学のキャンパス内で移動する行為にたとえるなら、「今いる教室を確認する」「教室に置いてある物を見渡す」「別の教室へ移動する」に相当します。この3つが自在に使えるようになるだけで、黒い画面への苦手意識はかなり薄れます。

このページではSET 1〜3、合計30行のコマンドを上から順に叩きます。手打ち推奨(コピーは確認用)です。ターミナル画面の行をクリックするとコマンドがコピーされる機能もありますが、まずは自分の指でキーボードを叩いて、綴りごと体に覚えさせましょう。

SET 1 ― 今いる場所を確認する

ubuntu@lightsail: ~
  1. $pwd
  2. /home/ubuntu
  3. $ls
  4. $ls -l
  5. $ls -a
  6. . .. .bash_history .bash_logout .bashrc .profile .ssh
  7. $ls -la
  8. $ls -lh
  9. $cd /
  10. $pwd
  11. /
  12. $ls
  13. $cd
解説 ― SET 1 で何をしたか

1行目のpwd(print working directoryの略)は、今自分がファイルシステムのどこにいるかを表示するコマンドです。ubuntuユーザーでログインした直後は、自分専用の部屋にあたるホームディレクトリ※1/home/ubuntuにいるので、すぐ下にグレーで表示されている出力のようになります(行番号のないグレーの行は、コマンドではなく画面に返ってくる出力の例です)。

26行目はls(listの略)にオプションを1つずつ足しながら、同じ場所の見え方がどう変わるかを確認しています。オプションなしのlsはファイル名だけをさらっと並べますが、3行目のように-lを付けると権限・所有者・サイズ・更新日時まで含めた詳細な一覧(ロングフォーマット)になります。4行目の-aはall、つまり普段は隠されているファイルまで全部見せる指定で、名前が.から始まる隠しファイル※2(設定ファイルなど)が出力例のように出てきます。

5行目の-la-l-aを組み合わせたもので、隠しファイルも含めて詳細表示します。オプションはこのように1文字ずつつなげて書くことができます。6行目の-lh-l-h(human-readable)を足したもので、ファイルサイズを1234567のような桁数のかたまりではなく、1.2Mのように読みやすい単位で表示します。

7行目のcd /は、Linuxのファイルシステム全体の出発点であるルートディレクトリ※3(/)へ移動する命令です。8行目のpwdでその場所を確認し、9行目のlsでetcやvar、homeといったLinuxの主要フォルダが並んでいる様子を見ます。10行目のcdは引数を何も付けずに実行すると、必ず自分のホームディレクトリへ連れ戻してくれます。迷子になったらcdとだけ打つ、というのは覚えておいて損のない習慣です。

POINT

このページのコマンドはできるだけ手打ちで進めてください。ターミナル画面の各行はクリックするとコピーできますが、これはあとで見返して確認する用の機能です。タイピングでミスをして怒られる経験も、Linuxに慣れるための大事な練習になります。

ゆみちゃん
ゆみ

「今どこにいるかわからなくなる」のって、大学の校舎で迷子になるのとそっくりだよ! そういうときはpwdで現在地チェック、cdだけ打ってホームに帰る。この2つを覚えておけば、どれだけ深い階層に潜っても絶対に迷子にならないよ!

SET 2 ― ディレクトリを移動する

ubuntu@lightsail: ~
  1. $pwd
  2. /home/ubuntu
  3. $cd /etc
  4. $pwd
  5. $ls
  6. $cd ..
  7. $pwd
  8. /
  9. $cd /home/ubuntu
  10. $cd /var/log
  11. $cd ~
  12. $pwd
  13. /home/ubuntu
解説 ― SET 2 で何をしたか

1行目で現在地がホームディレクトリであることを確認したうえで、2行目のcd /etcで設定ファイルの倉庫である/etcディレクトリへ移動します。このように/から始まるパスの書き方を絶対パス※4と呼び、今どこにいても必ず同じ場所を指す「住所」のようなものです。34行目で移動できたことと、その中身を確認しています。

5行目のcd ..は、現在地から見て1つ上の階層(親ディレクトリ)へ移動する書き方です。/etcから見て1つ上は/なので、6行目のpwdで確認するとルートディレクトリに戻っていることがわかります。この..のような、今いる場所を基準にした書き方を相対パス※5と呼びます。

7行目で改めて絶対パス/home/ubuntuを指定してホームに戻り、8行目では/var/logというまったく別の場所(ログファイルの保管庫。第5章で詳しく扱います)へ一気に移動しています。絶対パスを使えば、今どこにいるかに関係なく目的地へ一発でたどり着けるのが利点です。

9行目のcd ~は、~(チルダ)記号を使ってホームディレクトリへ戻る書き方です。SET 1の10行目で使ったcd単体と同じ結果になりますが、~は「ホームディレクトリそのものを指す記号」としてパスの一部にも使えるため(たとえば~/Documentsのように)、覚えておくと非常に便利です。最後の10行目のpwdで、無事ホームに戻れたことを確認して締めくくります。

POINT

絶対パスは自宅の郵便番号付き住所、相対パスは「ここから2つ隣のコンビニ」のような現在地基準の道案内です。遠くへ確実に移動したいときは絶対パス、近くをちょこちょこ移動するときは相対パスと使い分けると効率が上がります。

SET 3 ― 相対パス・~・- を使いこなす

ubuntu@lightsail: ~
  1. $ls /etc
  2. $ls /etc/ssh
  3. $cd ./
  4. $cd ../..
  5. $pwd
  6. /
  7. $cd -
  8. /home/ubuntu
  9. $ls ~
  10. $ls ..
  11. $cd /usr/share
  12. $cd ~
解説 ― SET 3 で何をしたか

SET 2の最後でcd ~を打っているので、この時点でも現在地は/home/ubuntuです。1行目のls /etc2行目のls /etc/sshは、cdで移動しなくてもlsに絶対パスを渡せば、その場にいながら別の場所の中身をのぞけることを確認しています。SSHの設定ファイル置き場である/etc/sshは、第5章のファイアウォールの回で再登場します。

3行目のcd ./に登場する.(ドット1つ)は「今いる場所そのもの」を指す相対パスの記号です。自分自身へ移動する命令なので、実行しても現在地は変わりません。..(ドット2つ)が「1つ上の階層」なのに対し、.は「今ここ」を意味すると対比で覚えると混同しません。

4行目のcd ../....を2回重ねた書き方で、「1つ上、さらにもう1つ上」と2階層をまとめて移動します。/home/ubuntuから見て1つ上は/home、さらに1つ上は/なので、5行目のpwdで確認するとルートディレクトリにたどり着いています。

6行目のcd -(ハイフン)は、「直前にいたディレクトリへ戻る」特別な書き方です。1つ前にいたのは/home/ubuntuなので、出力例のようにそこへ戻ります。長い絶対パスを打ち直さなくても、行ったり来たりを1コマンドで済ませられる時短ワザです。

7行目のls ~はホームディレクトリの中身を、8行目のls ..は現在地(ホームディレクトリ)の1つ上、つまり/homeの中身を一覧します。cdだけでなくlsにも相対パスや~を渡せることが確認できます。最後に9行目で/usr/share(アプリケーションが共有するデータの置き場)へ寄り道したあと、10行目のcd ~でホームディレクトリへ戻り、次のページへ進む準備を整えます。

ゆみちゃん
ゆみ

...、最初は絶対ごちゃごちゃになるやつだ~! あたしも最初の頃「今ここ」のつもりで..を打って全然違う場所に飛んで混乱したことあるよ。ドット1個は現在地、ドット2個は親、って呪文みたいに唱えて覚えるのがおすすめ!

POINT

cd -は「さっきの場所に戻る」ボタンだと思ってください。2つの作業ディレクトリを行き来するときに、フルパスを毎回打たずに済むので、慣れると手放せなくなります。

まとめ

1-1では、Linuxのファイルシステムを歩くための基本コマンドを一通り体験しました。このページで叩けるようになったコマンドを一覧にまとめます。

コマンド何をするか覚え方
pwd現在いるディレクトリを表示するprint working directory(今いる作業場所を印字する)
lsディレクトリの中身を一覧表示するlist(リストを見る)
ls -l権限・所有者・サイズなど詳細付きで一覧するlong format(詳しい形式)
ls -a隠しファイルも含めて一覧するall(全部見せて)
ls -la隠しファイルも含めて詳細一覧する-lと-aの合わせ技
ls -lhサイズを読みやすい単位で詳細一覧するhuman-readable(人間にやさしい表示)
cd <パス>指定したディレクトリへ移動するchange directory(場所を変える)
cd / cd ~ホームディレクトリへ戻る迷ったら家に帰る
cd /ルートディレクトリへ移動するすべての大元の教室へ
cd ..1つ上の階層(親)へ移動するドット2個 = 1個上
cd ./今いる場所へ移動する(実質何もしない)ドット1個 = 今ここ
cd ../..2つ上の階層へまとめて移動する..を2回重ねる
cd -直前にいたディレクトリへ戻るハイフン = さっきの場所

次のページ「1-2. ファイルとディレクトリを作る」では、いよいよmkdirtouchを使って、自分の手で新しいディレクトリやファイルを作っていきます。

脚注 ─ 用語解説
  1. ホームディレクトリ … 各ユーザーに割り当てられた専用のディレクトリ。ubuntuユーザーの場合は/home/ubuntuで、ログイン直後は必ずここにいる。
  2. 隠しファイル … ファイル名が.から始まるファイルやディレクトリ。設定ファイルなどが多く、通常のlsでは表示されず-aオプションで初めて見える。
  3. ルートディレクトリ … Linuxのファイルシステム全体の最上位にあたるディレクトリ。/という1文字で表す、すべてのフォルダの大元。
  4. 絶対パス … ルートディレクトリ/から書き始める、現在地に関係なく同じ場所を指す住所のようなパスの書き方。
  5. 相対パス … 今いる場所を基準にして書くパスの書き方。.(今ここ)や..(1つ上)を使って表す。