ディレクトリ構造の全体像 - Linuxファイルシステムを理解する

ディレクトリ構造の全体像 - Linuxファイルシステムを理解する

cd /etc とか /var/log とか、いろんな場所が出てくるけど、これって全部何なの?」Linuxを触り始めると必ずぶつかる疑問です。この記事では、ライニー先輩とリナの対話を通じて、Linuxのディレクトリ構造の地図を一緒に頭に入れていきましょう。

1. 導入:ファイルシステムって何?

リナ: ライニー先輩、Linuxって Documents フォルダとかが見当たらなくて、/etc とか /usr とか知らない場所ばかりで迷子になります...
ライニー先輩: それはよく分かるよ。Windowsの「Cドライブ」みたいな感覚で探すと混乱するんだ。Linuxには1本の大きな木みたいな構造があってね。まずその全体像をつかもう。

ファイルシステムとは

Linuxでは、すべてのファイルとフォルダ(ディレクトリ)がたった1つの出発点から枝分かれする「木」のような構造になっています。この出発点をルートディレクトリと呼び、/(スラッシュ1文字)で表します。

リナ: Windowsだと「Cドライブ」「Dドライブ」って分かれてましたけど、Linuxは違うんですか?
ライニー先輩: そう、そこが大きな違い。Linuxにはドライブレターがないんだ。USBメモリも外付けディスクも、ぜんぶ / から始まる1本の木の「どこかの枝」としてつながる。これを覚えておくと、後がぐっと楽になるよ。

なぜ構造を知ると得なのか

  • 設定ファイルの場所が予想できる(だいたい /etc の中)
  • ログの場所が分かる(だいたい /var/log
  • エラーメッセージのパスを見て「これはシステム領域だな」と当たりがつく
  • 「どこに何を置けばいいか」で迷わなくなる

2. すべての出発点「/」(ルート)

リナ: さっき出てきた / って、それ自体がフォルダなんですか?
ライニー先輩: その通り。/いちばん上のディレクトリで、すべてのファイルの先祖にあたる場所だよ。試しに中身を見てみよう。
$ ls /
bin   dev  home  lib    mnt  proc  run   srv  tmp  var
boot  etc  lib64  media  opt  root  sbin  sys  usr
リナ: わー、たくさんありますね。これ全部覚えるんですか...?
ライニー先輩: 安心して。全部を暗記する必要はないよ。最初に押さえるのは5〜6個だけ。残りは「そういう箱があるんだ」くらいでOK。この並び順には実はルールがあってね、**FHS(Filesystem Hierarchy Standard)**っていう世界共通の決まりに従っているんだ。

FHS(ファイルシステム階層標準)

どのディレクトリに何を置くかを決めた標準仕様です。これがあるおかげで、UbuntuでもCentOSでも「設定は /etc」「ログは /var/log」とほぼ同じ場所にあります。ディストリビューションが違っても迷わないのはこの標準のおかげです。

3. 主要ディレクトリの地図

ライニー先輩: まずは全体マップを見てみよう。これが頭に入れば、もう迷子にはならないよ。
/                  ← すべての出発点(ルート)
├── bin            ← 基本コマンド(ls, cp など)
├── boot           ← 起動に必要なファイル
├── dev            ← デバイス(ディスク、USBなど)
├── etc            ← システム全体の設定ファイル
├── home           ← ユーザーごとの個人フォルダ
│   └── yamada     ← yamadaさんの「自分の部屋」
├── lib            ← 共有ライブラリ(プログラムの部品)
├── opt            ← 追加で入れたソフト
├── proc           ← 動作中のプロセス情報(仮想)
├── root           ← 管理者(root)の個人フォルダ
├── tmp            ← 一時ファイル(再起動で消える)
├── usr            ← アプリやコマンド本体の置き場
└── var            ← 変化するデータ(ログなど)
リナ: homeroot って似てますけど、別物なんですか?
ライニー先輩: いいところに気づいたね。/home/ユーザー名一般ユーザーの部屋/root管理者専用の部屋だよ。名前は似てるけど、ルートディレクトリ / とも、管理者の部屋 /root とも、全部別物。混同しやすいから後で整理するね。

ざっくり3グループで覚える

グループ ディレクトリ ひとことで言うと
使う人のもの /home, /root 個人のファイル置き場
システムのもの /etc, /bin, /usr, /lib 設定・プログラム本体
動いて変わるもの /var, /tmp, /proc, /dev ログ・一時・実行中の情報

4. よく使うディレクトリを詳しく

リナ: それぞれ、もう少し具体的に知りたいです。
ライニー先輩: よく顔を出すものから順番に見ていこう。「いつ使うか」をセットで覚えると忘れにくいよ。

/home - あなたの作業場所

ユーザーごとの個人ディレクトリです。yamada というユーザーなら /home/yamada が割り当てられ、ターミナルでは ~(チルダ)で表せます。

$ cd ~
$ pwd
/home/yamada

普段ファイルを作ったり編集したりするのは、ほぼここの中です。自分のものは /home の下、と覚えておけば安全です。

/etc - 設定ファイルの倉庫

システム全体の設定ファイルが集まる場所です。読み方は「エトセ」や「エトシー」。

$ ls /etc
hostname  hosts  passwd  ssh  network  ...
リナ: passwd ってパスワードが書いてあるんですか!?
ライニー先輩: 名前は紛らわしいけど、/etc/passwd はユーザーの一覧情報で、パスワードそのものは入っていないよ(実際の暗号化パスワードは /etc/shadow)。/etc の中身は基本「読むだけ」、編集は管理者権限が必要なものが多い、と覚えておこう。

/var - 変化し続けるデータ

「variable(変わる)」の略。サイズが増えたり減ったりするデータが入ります。初心者がいちばんお世話になるのはログです。

$ ls /var/log
syslog  auth.log  dpkg.log  ...

トラブル時に最初に見る場所が /var/log です。「何かおかしい」と思ったらここのログを確認する、というのは実務でも基本の動きになります。

/bin と /usr/bin - コマンドの本体

あなたが打つ lscp といったコマンドの「実体」がここにあります。

$ which ls
/usr/bin/ls
リナ: ls ってコマンドだと思ってましたけど、ファイルなんですか?
ライニー先輩: そう、コマンドの正体は /usr/bin などに置かれたプログラムファイルなんだ。which コマンド名 でその場所を確認できるよ。最近のディストリでは /bin/usr/bin への近道(シンボリックリンク)になっていることも多いよ。

/tmp - 一時置き場

一時的なファイル置き場です。再起動すると中身が消えることが多いので、大事なファイルは置かないこと。

/opt と /root(ひとことメモ)

  • /opt: 後から追加でインストールした大きめのソフトが入ることがある場所
  • /root: 管理者(rootユーザー)の個人フォルダ。一般ユーザーは入れない(Permission denied になる)

5. 仮想的なディレクトリ /proc /dev /sys

リナ: /procls したら数字のフォルダがいっぱい出てきて、不気味でした...
ライニー先輩: 怖がらなくて大丈夫。/procディスク上に実在しないディレクトリなんだ。Linuxが「今動いている状態」をその場で見せてくれる、いわば情報の窓口だよ。
ディレクトリ 中身 イメージ
/proc 実行中プロセスの情報 システムの「健康診断窓口」
/dev デバイス(ディスク・USBなど) 機器への「接続口」
/sys カーネルやハードの情報 内部設定の「のぞき窓」
$ cat /proc/cpuinfo   # CPUの情報が見られる
$ ls /dev/sda*        # ストレージのデバイス

これらは「ファイルのフリをした情報」です。仕組みを完全に理解する必要はまだありません。「実体のない特別な箱がある」とだけ知っておけば十分です。

リナ: 構造は分かってきました。でも実際に動いていると、やっぱり迷子になりそうで...
ライニー先輩: そんなときの「現在地確認3点セット」を教えるね。これさえあれば、どこにいても落ち着けるよ。

現在地確認の3点セット

$ pwd          # 今どこにいる?(絶対パスで表示)
$ ls           # ここに何がある?
$ cd /         # ルートに戻ってやり直す
リナ: cd / でいちばん上に戻れるんですね。
ライニー先輩: そう。迷ったら cd / でルートに戻って、そこから ls で枝を1つずつたどれば、必ず目的地にたどり着ける。木の根元に戻る感覚だよ。cd ~ なら自分の部屋(ホーム)に一発で戻れる。

絶対パスと相対パス

種類 意味
絶対パス /var/log/syslog / から書いた完全な住所
相対パス log/syslog 今いる場所からの道順

迷ったときは絶対パス/ から始まる書き方)を使うと確実です。「どこにいても同じ場所を指す」のが絶対パスの強みです。

ミニ課題

ライニー先輩: それじゃあ、地図が頭に入ったか確認してみよう!

課題1: ルートを探検しよう

ls / を実行して、この記事に出てきたディレクトリ(etc, var, home など)が実際にあるか確認しよう。

課題2: 自分の部屋に戻ろう

cd /etc でいったん設定の倉庫に移動し、pwd で現在地を確認。そのあと cd ~ で自分のホームに戻り、もう一度 pwd で戻れたか確かめよう。

課題3: コマンドの正体を見よう

which ls を実行して、ls コマンドの本体がどのディレクトリにあるか確認しよう。/usr/bin/bin のどちらだったかな?

リナ: できました!/etc に行っても cd ~ で一瞬で部屋に帰れるから、もう怖くないです。
ライニー先輩: その感覚が大事。迷ったら根元(/)か部屋(~)に戻る。これがディレクトリ移動の基本だよ。

振り返り

リナ: 今日はLinuxのディレクトリ構造を学びました。/ が出発点で、そこから homeetcvar が枝分かれしてるんですね!
ライニー先輩: その通り。そして「自分のものは /home」「設定は /etc」「ログは /var/log」。この3つだけでも実務でかなり戦えるよ。
リナ: 知らない場所が出てきても、「これはシステム側だな」って当たりがつくようになりました。
ライニー先輩: 完璧だね。地図が頭にあると、エラーメッセージのパスを見ただけで状況が読めるようになる。次は実際にファイルを作って動かしてみよう!

今日の3行まとめ

  1. Linuxは /(ルート)を出発点にした1本の木。ドライブレターはない
  2. 最重要は3つ —— 自分のものは /home、設定は /etc、ログは /var/log
  3. 迷ったら pwd で現在地確認、cd / で根元、cd ~ で自分の部屋に戻る

次に読む

ディレクトリ構造の地図が頭に入ったら、実際に移動・操作して体に覚えさせましょう。