第1部 Linuxを知る
第3章 ファイルシステムとディレクトリ構造
Linuxを歩き回るには、まず「地図」が必要です。この章では、Linuxのファイルがどんな形で並んでいるのか、そしてどこに何があるのかを頭に入れます。ここが分かると、以降のコマンドが一気に腑に落ちます。
🎯 この章で学ぶこと
- Linuxのファイルは
/(ルート)を頂点とした「1本の木」であること - 主要なディレクトリ(
/etc/var/homeなど)の役割 - 絶対パスと相対パスの違い、
...~の意味 pwd/cd/lsで移動し、現在地を確認する方法- USBや別ディスクが階層につながる「マウント」の考え方
3.1 Linuxのすべては「1本の木」
Windowsに慣れていると、まず戸惑うのがここです。Windowsではドライブごとに C: ドライブ、D: ドライブ…と入れ物が分かれていて、それぞれが独立した根っこを持っています。しかしLinuxには ドライブレターがありません。すべては /(スラッシュ)というたった一つの頂点から始まる、1本の大きな木のように枝分かれしています。
この頂点 / を ルート(root)ディレクトリと呼びます。すべてのファイルとフォルダは、必ずこのルートのどこかにぶら下がっています。イメージとしては、こんな形です。
/ ← すべての出発点(ルート)
├── home/ ← ユーザーの部屋
│ └── yuuki/ ← あなたのホーム
├── etc/ ← 設定ファイル置き場
├── var/ ← ログなど変化するデータ
├── usr/ ← プログラム本体
└── ...
もう一つ、Linuxを理解するうえで欠かせないのが「すべてはファイル」という思想です。文書や画像はもちろん、キーボードやディスクといったハードウェアまでも、ファイルとしてこの木のどこかに表れます(後述の /dev)。動作中のプログラムの情報でさえ、ファイルのように読み出せます(/proc)。「あらゆるものが、この1本の木の中のファイルとして扱える」——この統一感が、Linuxをシンプルで強力にしています。
Windowsで「フォルダ」と呼ぶものを、Linuxの世界では ディレクトリと呼びます。指しているものは同じ「ファイルを入れる入れ物」です。この教材でも、以降は「ディレクトリ」で統一します。また、/ はパスの区切り文字でもあります(Windowsの \ にあたるもの)。
3.2 主要なディレクトリの意味
ルートの直下には、決まった名前のディレクトリが並んでいます。これは FHS(Filesystem Hierarchy Standard、ファイルシステム階層標準)というルールで、どのディストリビューションでもだいたい同じ場所に、同じ役割のものが置かれます。だから一度覚えれば、UbuntuでもRHELでも迷いません。よく出会うものを表にまとめます。
| ディレクトリ | 読み | 役割 |
|---|---|---|
/ | ルート | すべての頂点。全ディレクトリの出発点 |
/home | ホーム | 一般ユーザーの個人部屋。/home/yuuki のように各人ごと |
/root | ルート(ホーム) | 管理者(rootユーザー)専用のホーム。/ とは別物 |
/etc | エトセ | システム全体の設定ファイル置き場 |
/var | バー | 変化するデータ。ログ(/var/log)、メール、キャッシュなど |
/usr | ユーザー | アプリの本体・ライブラリ・共有データ(/usr/bin など) |
/bin | ビン | 基本コマンドの実体(ls や cp など) |
/tmp | テンプ | 一時ファイル置き場。再起動で消えることが多い |
/dev | デブ | デバイス(装置)ファイル。ディスクやキーボードがファイルに見える |
/proc | プロック | 実行中のプロセスやカーネルの情報。実体のない仮想的な場所 |
すべてを丸暗記する必要はありません。まずは「設定は /etc、ログは /var/log、自分のファイルは /home」の3つだけ押さえれば、実務のスタート地点としては十分です。残りは触りながら少しずつ馴染んでいきます。
/dev と /proc は「本物のファイル」ではない
/dev や /proc の中身は、ディスクに保存された普通のファイルではありません。/dev はハードウェアへの「窓口」を、/proc はカーネルが今この瞬間に持っている情報を、ファイルの姿で見せているものです。たとえば cat /proc/cpuinfo と打つと、CPUの情報が読み出せます。これも「すべてはファイル」という思想の表れです。
3.3 絶対パスと相対パス
ファイルの場所を指し示す文字列を パス(path、道筋)と呼びます。パスには2つの書き方があり、この違いを理解することが、Linuxを自在に歩き回る鍵になります(パスの考え方は、コンピュータ大全コース第3章でも扱っています)。
- 絶対パス —
/(ルート)から書き始める、住所のような完全な道順。どこにいても必ず同じ場所を指します。例:/etc/hosts - 相対パス — 今いる場所を起点にした、近道のような書き方。例:
./file(今の場所のfile)
たとえるなら、絶対パスは「東京都千代田区…」というフルの住所、相対パスは「ここから2つ隣の建物」という言い方です。相対パスを読み解くには、次の3つの記号を覚えます。
| 記号 | 意味 | 例 |
|---|---|---|
. | 今いるディレクトリ(カレントディレクトリ) | ./run.sh = 今の場所のrun.sh |
.. | 一つ上のディレクトリ(親) | cd .. = 一つ上へ移動 |
~ | 自分のホームディレクトリ | ~ = /home/yuuki の短縮形 |
たとえば /home/yuuki/documents にいるとき、一つ上の /home/yuuki にある memo.txt は、絶対パスなら /home/yuuki/memo.txt、相対パスなら ../memo.txt と書けます。どちらも同じファイルを指します。慣れるまでは絶対パスで確実に、慣れてきたら相対パスで手早く、と使い分けると良いでしょう。
相対パスは短くて便利ですが、「今どこにいるか」を勘違いすると、意図しない場所を操作してしまいます。特に、ファイルを削除・移動するような後戻りできない操作のときは、絶対パスで書くほうが安全です。「どこにいても、この住所は必ずこの場所」という確実さが、事故を防ぎます。
3.4 ディレクトリを移動して確認する
それでは実際に木の中を歩いてみましょう。使うのは3つのコマンドだけです。pwd(今どこにいる?)、cd(移動する)、ls(何がある?)です。
まず pwd(print working directory)。今いる場所を絶対パスで教えてくれます。
yuuki@ubuntu:~$ pwd
/home/yuuki
ログイン直後は、自分のホーム /home/yuuki にいます。プロンプトの ~ は、この場所を表していたわけです。次に cd(change directory)で /etc へ移動してみます。
yuuki@ubuntu:~$ cd /etc
yuuki@ubuntu:/etc$ pwd
/etc
プロンプトの :~ の部分が :/etc に変わりました。プロンプトは常に現在地を映してくれるので、頼れる目印になります。ここで ls(list)を打つと、このディレクトリの中身が並びます。
yuuki@ubuntu:/etc$ ls
apt hostname hosts passwd ssh systemd
group host.conf fstab profile sudoers ...
さらに詳しく見たいときは ls -la を使います。-l は一覧を縦に詳しく(long)、-a は隠しファイルも含めて全部(all)表示するオプションです。
yuuki@ubuntu:/etc$ ls -la
合計 812
drwxr-xr-x 95 root root 4096 2月 3 12:00 .
drwxr-xr-x 20 root root 4096 1月 20 09:14 ..
-rw-r--r-- 1 root root 664 2月 3 11:58 hosts
-rw-r--r-- 1 root root 2969 2月 3 11:58 passwd
drwxr-xr-x 7 root root 4096 2月 3 11:58 ssh
...
ここで注目したいのが、先頭の2行にある . と .. です。. は「今いるディレクトリそのもの」、.. は「一つ上の親ディレクトリ」を指す、特別な項目です(3.3で学んだ記号が、実際にここに現れています)。
Linuxでは、ファイル名の先頭が . のものは隠しファイルとして扱われ、普通の ls では表示されません。ls -a を付けると見えるようになります。設定ファイルによく使われ、ホームには .bashrc(シェルの設定)などが隠れています。「見えないだけで、ちゃんとそこにある」——迷子のファイルを探すときは -a を思い出しましょう。
木の形をひと目で眺めたいときは tree が便利です(入っていなければ第6章の方法でインストールできます)。-L 1 は「1段目まで」という深さの指定です。
yuuki@ubuntu:~$ tree -L 1 /
/
├── bin
├── boot
├── dev
├── etc
├── home
├── proc
├── root
├── tmp
├── usr
└── var
最後に、どこにいても一瞬でホームに戻るには、引数なしの cd だけを打ちます(cd ~ でも同じです)。迷子になったら、まずこれで自分の部屋に帰りましょう。
yuuki@ubuntu:/etc$ cd
yuuki@ubuntu:~$ pwd
/home/yuuki
3.5 設定は/etc、ログは/var/log、ユーザーは/home
ディレクトリの一覧を丸暗記するより、実務で毎日のように触る場所を具体的に知るほうが役に立ちます。ここでは特に重要な3か所を、実際の中身とともに見ておきましょう。
設定ファイルは /etc に集まる
Linuxで「あのソフトの設定を変えたい」と思ったら、まず /etc を見ます。ネットワーク、ユーザー、SSHサーバー、Webサーバー——ほとんどの設定ファイルがここに集約されています。たとえば、名前解決の設定ファイル /etc/hosts はこんな中身です。
yuuki@ubuntu:~$ cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 ubuntu
::1 localhost ip6-localhost ip6-loopback
「設定を探すなら、まず /etc」——これは運用の常識として体に染み込ませておくと、この先ずっと役立ちます。
ログは /var/log に残る
システムやアプリが「何が起きたか」を記録したログは、/var/log にたまっていきます。サーバーの調子がおかしいとき、原因の手がかりを探す最初の場所が、ここです。どんなログがあるか覗いてみましょう。
yuuki@ubuntu:~$ ls /var/log
apt auth.log dpkg.log journal syslog
alternatives.log boot.log kern.log nginx ...
auth.log はログイン認証の記録、syslog はシステム全般の記録です。「/var/log にログがある」と知っているだけで、トラブル対応の入り口に立てます。実際のログの読み方や追いかけ方は、第4章の tail や grep、そして本コース第7章・コンピュータ大全コース第14章「サーバー運用の実務」で詳しく扱います。
自分のファイルは /home に置く
あなたが作る文書やスクリプトは、基本的に自分のホーム /home/yuuki の中に置きます。ユーザーが増えれば /home/tanaka、/home/sato …と各人の部屋が並びます。他人の部屋には勝手に入れないよう権限で守られていますが、その仕組みは第5章で学びます。
重要ファイルがどこにあるかを知ることは、そのまま「どこを守るべきか」を知ることです。たとえば /etc/passwd にはユーザーの一覧が、/etc/shadow にはパスワードのハッシュ(暗号化された痕跡)が、/etc/ssh には遠隔ログインの設定が置かれています。攻撃者が狙うのも、まさにこうした場所です。だからこそ運用者は、これらの重要ファイルが「誰に」「いつ」変更されたかを監視し、勝手な書き換えを検知することに力を注ぎます。また、認証の記録が残る /var/log/auth.log は、不審なログイン試行を見つける手がかりの宝庫です。「大事なものはどこにあるか」という地図が頭に入っていれば、守りの勘所も自然と見えてきます。
3.6 マウントの概念
最後に、少し高度ですが大切な考え方に触れておきます。「Linuxにはドライブレターがない」と3.1で述べました。では、USBメモリや2台目のディスクは、どうやって使うのでしょうか。答えが マウントです。
マウントとは、別のディスクをあの1本の木の、どこかの枝に「つなぐ」操作です。たとえばUSBメモリを挿すと、その中身が /media/yuuki/USB のようなディレクトリに現れます。以後、その場所へ cd すれば、USBの中を普通のディレクトリと同じように歩けます。Windowsのように「別ドライブ」として切り離すのではなく、すべてを同じ木の一部として扱う——これがLinux流です。
今どのディスクが、木のどこにつながっているか(マウントされているか)は、df -h で一覧できます。-h は human-readable、つまり 1.9G のように人が読みやすい単位で表示するオプションです。
yuuki@ubuntu:~$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 30G 8.2G 20G 30% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
/dev/sdb1 64G 1.1G 63G 2% /media/yuuki/USB
右端の Mounted on の列が「木のどこにつながっているか」を示します。1行目の /dev/sda1 は本体ディスクで、木の頂点 / にマウントされています。3行目の /dev/sdb1 はUSBメモリで、/media/yuuki/USB につながっているのが読み取れます。Use%(使用率)の列は、ディスクの空き容量を確認する運用の定番でもあります。ここでは「別のディスクも、同じ木のどこかに生えてくる」というイメージだけつかめれば十分です。
まとめ
- Linuxのファイルは、ドライブで分かれず、
/(ルート)を頂点とした1本の木で表される - 「すべてはファイル」——ハードウェアやプロセスの情報さえファイルのように扱える
- 設定は
/etc、ログは/var/log、自分のファイルは/homeが最重要の3か所 - 絶対パスは
/から始まる完全な住所、相対パスは現在地起点の近道。...~を押さえる pwdで現在地、cdで移動、ls -laで中身と隠しファイルを確認- USBや別ディスクは「マウント」で木のどこかにつながる。
df -hで状況を確認できる
練習問題
次の3つのパスは、それぞれ「絶対パス」と「相対パス」のどちらでしょうか。理由も添えて答えてください。
(1) /var/log/syslog (2) ../memo.txt (3) ./run.sh
解答を見る
(1) 絶対パス。先頭が /(ルート)から始まっており、どこにいても同じファイルを指すからです。
(2) 相対パス。..(一つ上)から始まり、今いる場所を起点にしているからです。
(3) 相対パス。.(今いるディレクトリ)を起点にしているからです。見分け方は簡単で、/ で始まれば絶対パス、そうでなければ相対パスです。
次のそれぞれのファイルは、標準的にはどのディレクトリを探せば見つかりますか。ディレクトリ名で答えてください。
(1) システムやアプリの動作ログ (2) SSHサーバーやネットワークの設定ファイル
解答を見る
(1) /var/log。ログなど「変化していくデータ」は /var の下、とりわけ /var/log にまとまっています。
(2) /etc。システム全体の設定ファイルは /etc に集約されており、SSHの設定なら /etc/ssh、名前解決なら /etc/hosts のようになります。「設定は /etc、ログは /var/log」は運用の合言葉として覚えておきましょう。
あなたは今 /home/yuuki/documents にいます。ここから /home/yuuki へ戻る方法を、(1) 相対パスを使う書き方、(2) 引数なしの cd を使う書き方、の2通りで示してください。
解答を見る
(1) 相対パスなら cd .. です。.. は「一つ上の親ディレクトリ」を意味し、/home/yuuki/documents の一つ上は /home/yuuki なので、狙いどおり戻れます。
(2) 引数なしの cd(または cd ~)を打つと、現在地に関係なく自分のホーム /home/yuuki へ一発で戻れます。移動後に pwd で現在地を確認すると確実です。