Instiq
第2章 · ファイル・ディレクトリの操作と管理·v1.0.0·更新 2026/7/6·読了目安 約10分

変更要約: 初版(主題1.02・副主題1.02.1〜1.02.4に対応)

2.4ファイルの配置と検索

この節の要点

FHS(Filesystem Hierarchy Standard)が定める標準ディレクトリ構成と、ファイル・コマンドの検索手段を学びます。主要ディレクトリ(/etc・/var・/home・/usr 等)の役割、findlocateupdatedb/etc/updatedb.conf)の違い、コマンドの所在を調べる whichwhereistype を押さえます。

「設定ファイルはどこ?」「ログはどこ?」— Linux では答えがディストリビューションを超えてほぼ共通です。それを定める標準がFHSで、配置の地図を頭に入れておくと、探す・置く・トラブルシュートのすべてが速くなります。

2.4.1FHS の主要ディレクトリ

  • /etc=システム全体の設定ファイル/var=ログ・スプールなど増減するデータ(/var/log)//home=一般ユーザーのホーム//root=root のホーム。
  • /bin/sbin=基本コマンド(sbin は管理者向け)//usr=アプリケーションと共有データの本体(/usr/bin・/usr/share)//opt=追加ソフトの独立インストール先。
  • /tmp=一時ファイル(再起動で消えてよい)//boot=カーネルとブートローダー関連//dev=デバイスファイル//proc/sys=カーネルが見せる仮想ファイルシステム

2.4.2検索コマンドの使い分け

  • find=ディスクをその場で走査(最新・遅い)。locateupdatedb が作ったデータベースを検索(高速・DB 更新後の変更は映らない)。除外パス等は /etc/updatedb.conf で設定。
  • コマンドの所在=which(PATH 上の実行ファイルの場所)・whereis(実行ファイル+マニュアル+ソース)・typeシェルビルトインか外部コマンドかも判定type cd → shell builtin)。
試験ポイント

「locate で見つからない新規ファイル→ updatedb を実行」「今この瞬間の状態を確実に探す→ find」「cd の正体を調べられるのは type(ビルトイン判定)」 が定番です。FHS では 「設定=/etc・ログ=/var/log・一時=/tmp・追加ソフト=/opt」 の対応を最優先で覚えます。

locatefind の関係は「電話帳と現地調査」に例えられます。locateupdatedb(通常 cron で1日1回実行)が事前に作った索引を引くため一瞬で答えますが、索引が古ければ「今日作ったファイル」は出ませんし、削除済みファイルが出ることもあります。手動で updatedb を実行すれば最新化できます(/etc/updatedb.conf で /tmp などの除外パスを制御)。確実性が要る運用作業ではfindで実際に歩くのが正解です。コマンド探しの3兄弟は守備範囲で使い分けます:which は「シェルが実行するのは PATH 上のどれか」だけを答え、whereis はマニュアルやソースの場所まで、typeエイリアスシェルビルトイン(cd・echo 等)まで見抜きます。which cd が何も返さないのに type cd が builtin と答える対比は、試験でも実務でも役に立つ知識です。

ディレクトリ役割代表例
/etcシステム設定/etc/passwd・/etc/fstab
/var増減するデータ/var/log・/var/spool
/usrアプリと共有データ/usr/bin・/usr/share
/opt//tmp追加ソフト/一時ファイル/opt/app・/tmp/xxx
注意

ひっかけ: 「locate は常にファイルシステムの現在の状態を返す」は誤りです。locate が見るのは updatedb 実行時点の索引で、リアルタイムではありません。また「which はシェルビルトインも判定できる」も誤り=which が探すのは PATH 上の実行ファイルだけで、ビルトインやエイリアスまで判定できるのは type です。

FHS 主要ディレクトリ・find/locate の対比・which/whereis/type の守備範囲の図。
設定は /etc・ログは /var/log

2.4.3この節のまとめ

  • FHS=設定 /etc・ログ /var/log・ホーム /home・アプリ /usr・追加 /opt・一時 /tmp・仮想 /proc,/sys
  • find=実走査(確実)/locate=索引(高速・updatedb で更新)。コマンド探しは which<whereis<type(type はビルトインまで)

進捗の記録にはログインが必要です。

理解度チェック

(軽い確認用)

Q1. 今朝作成したはずのファイルが locate で見つからない。最初に行うべき対処は?

Q2. システム全体の設定ファイルが置かれる、FHS 標準のディレクトリはどれ?

Q3. 「cd」がシェルビルトインか外部コマンドかを判定したい。適切なコマンドは?

理解度を確認第2章「ファイル・ディレクトリの操作と管理」の問題を解く