前口上
かなり表面的にさらっと流しています。
昔話になりますが、私が初めてLinux系に触れたのは実は遅めで、高校生の時にUbuntuがリリースされた頃だったと思います。WindowsよりもかこいいOS出たのか、みたいな気持ちでGUI系から始めました。当時は、Macが今ほど日常生活に組み込まれておらず自身もメインでは、C言語用ということもありWindows2000を使い続けていました。確かWindows以外使っている俺すげーみたいな感覚だった記憶があります。どうでもいい話ですが
今回は、作業していて何をするためのフォルダだっけ?と思うことがたまにあり、めんどくさいのでいっそのこと全部まとめておきました。
ファイルをどこに保存するか迷った時はこちらの記事を参考にして頂けたらと思います。
間違っている解釈あるかもしれませんが、その際は教えていただけるとありがたいです。
輪郭
.
├── bin
├── boot
├── dev
│ ├── null
│ ├── zero
│ └── tty
├── etc
│ ├── opt
│ ├── X11
│ ├── sgml
│ └── xml
├── lib
├── media
│ ├── floppy
│ ├── cdrom
│ ├── cdrecorder
│ └── zip
├── mnt
├── opt
│ ├── <package>
│ └── <provider>
├── sbin
├── srv
├── tmp
├── usr
│ ├── bin
│ | └── mh(option)
│ ├── include
│ | └── bsd(option)
│ ├── lib
│ ├── local
│ | ├── bin
│ | ├── etc
│ | ├── games
│ | ├── include
│ | ├── lib
│ | ├── man
│ | ├── sbin
│ | ├── share
│ | └── src
│ ├── sbin
│ ├── share
│ | ├── man
│ | | ├── man1(option)
│ | | ├── man2(option)
│ | | ├── man3(option)
│ | | ├── man4(option)
│ | | ├── man5(option)
│ | | ├── man6(option)
│ | | ├── man7(option)
│ | | └── man8(option)
│ | ├── misc
│ | ├── dict(option)
│ | | └── words(option)
│ | ├── doc(option)
│ | ├── games(option)
│ | ├── info(option)
│ | ├── locale(option)
│ | ├── nls(option)
│ | ├── sgml(option)
│ | ├── terminfo(option)
│ | ├── tmac(option)
│ | ├── xml(option)
│ | └── zoneinfo(option)
│ ├── X11R6(option)
│ ├── games(option)
│ └── src(option)
├── var
│ ├── cache
│ ├── lib
│ ├── local
│ ├── lock
│ ├── log
│ ├── opt
│ ├── run
│ ├── spool
│ ├── tmp
│ ├── account(option)
│ ├── crash(option)
│ ├── games(option)
│ ├── mail(option)
│ └── yp(option)
├── home(option)
├── lib(option)
└── root(option)
# option→ユーザの任意で設定する
Filesystem
| 共有して使う | それ以外 | |
|---|---|---|
| 不変 | /usr, /opt | /etc, /boot |
| 可変 | /var/mail, /var/spool/news | /var/run, /var/lock |
古いUNIXのファイルシステムだと/usrと/etcどちらにも可変かつ不変なものが含まれていた。
現在の大抵のLinuxだと不変なものは/usrに残り続け、可変なものは全て/varに移動された。
/etcに関しても同様に、ただ長い期間に渡って/varに転送された。
以下にファイルシステムの構造を羅列する。
必須のものは、文字通りなくてはならないディレクトリであって、オプションは任意のディレクトリとなる。今まで必須と思っていたが、オプションだったということもあるかもしれない。
自分のLinux環境と照らし合わせながら確認してみると面白い結果が出るかもしれない。
Root Filesystem
必須
| ディレクトリ | 説明 |
|---|---|
| bin | 必須コマンドバイナリ |
| boot | ブートローダ用の不変ファイル |
| dev | デバイスファイル |
| etc | hostsファイルなど |
| lib | 共有で使う必須ライブラリやカーネルモジュール |
| media | 補助記憶装置のマウントポイント |
| mnt | 一時的なファイルシステム用のマウントポイント |
| opt | 追加されたアプリケーションソフトのパッケージ |
| sbin | 必須システムバイナリ |
| srv | 提供されたサービスのデータ |
| tmp | 一時ファイル |
| usr | 二次階層 |
| var | 可変データ |
オプション
| ディレクトリ | 説明 |
|---|---|
| home | ユーザのホーム |
| lib | 代替用の必須共有ライブラリ |
| root | ルートユーザ用のホーム |
/bin 直下
必須のコマンドバイナリを格納します。この箱にディレクトリを作っているのはあまり見かけないです。
UNIXの設計上小文字を使うという話がありましたが、当然大文字のコマンドはないです。基本コマンドとは言え、日常的に使っている人が多いので解説はいらないでしょう。
必須
cat, chgrp, chmod, chown, cp,
date, dd, df, dmesg,
echo, false, hostname, kill,
ln, login, ls,
mkdir, mknod, more, mount, mv,
ps, pwd, rm, rmdir,
sed, sh, stty, su, sync,
true, umount, uname
オプション
csh, ed, tar, cpio,
gzip, gunzip, zcat, netstat, ping
/etc 直下
hostsファイルなどを含みます。
必須
| ディレクトリ | 説明 |
|---|---|
| opt | /opt用の設定ファイル |
| X11 | X Windows system用の設定ファイル |
| sgml | SGML用の設定ファイル |
| xml | XML用の設定ファイル |
| conf, configファイルなどが入っていますが、設定ファイルなので説明は割愛します。 |
/media 直下
補助記憶装置のマウントポイント。
オプション
| ディレクトリ | 説明 |
|---|---|
| floppy | フロッピードライブ |
| cdrom | CD-ROMドライブ |
| cdrecorder | CD書き込み |
| zip | Zipドライブ |
/opt 直下
追加されたアプリケーションソフトのパッケージを置く。
必須
| ディレクトリ | 説明 |
|---|---|
| <package> | 不変パッケージのオブジェクト |
| <provider> | LANANAが提供するプロバイダー名 |
/sbin 直下
システム復元、回復、修復用の不可欠なバイナリが格納されている。
必須
shutdown
オプション
fastboot, fasthalt, fdisk, fsck, fsck.*,
qetty, halt, ifconfig, init,
mkfs, mkfs.*, mkswap,
reboot, route, swapon, swapoff, update
/usr 直下
複数のマシンで共有して使い、読み取り専用となる。
必須
| ディレクトリ | 説明 |
|---|---|
| bin | 大部分のユーザコマンド |
| include | Cプログラムによるヘッダファイル |
| lib | ライブラリ |
| local | ローカル二次階層 |
| sbin | 非重要なシステムバイナリ |
| share | アーキテクチャ非依存データ |
オプション
| ディレクトリ | 説明 |
|---|---|
| X11R6 | X Window Systemのバージョン11 リリース6 |
| games | ゲームや教育用のバイナリ |
| lib | 大体フォーマットライブラリ |
| src | ソースコード |
/usr/bin 直下
大部分のユーザコマンド
オプション
| ディレクトリ | 説明 |
|---|---|
| mh | UNIX環境で動く想定のmailインタフェース |
perl, python, tclsh, wish, expect
/usr/include 直下
Cプログラムによるヘッダファイル
オプション
| ディレクトリ | 説明 |
|---|---|
| bsd | OS BSDの互換ファイルを入れる箱 |
/usr/local 直下
インストールソフトはこちらに入るのが基本
必須
| ディレクトリ | 説明 |
|---|---|
| bin | ローカルバイナリ |
| etc | ローカルバイナリ用ホスト固有のシステム設定 |
| games | ローカル用ゲームバイナリ |
| include | Cヘッダファイル |
| lib | ローカル用ライブラリ |
| man | ローカル用オンラインマニュアル |
| sbin | ローカル用システムバイナリ |
| share | ローカル用アーキテクチャ非依存データ |
| src | ローカル用ソースコード |
/usr/share 直下
アーキテクチャ非依存データ
必須
| ディレクトリ | 説明 |
|---|---|
| man | オンラインマニュアル |
| misc | その他のアーキテクチャ非依存データ |
オプション
| ディレクトリ | 説明 |
|---|---|
| dict | 単語リスト |
| doc | その他のドキュメント |
| games | /usr/games用の不変データファイル |
| info | GNU情報システムのプライマリディレクトリ |
| locale | ロケール情報 |
| nls | ネイティブ言語サポート用のメッセージカタログ |
| sgml | SGMLデータ |
| terminfo | ターミナル用の制御文字用のDB |
| tmac | 文書整形コマンド |
| xml | XMLデータ |
| zoneinfo | タイムゾーン情報と設定 |
/usr/share/dict 直下
オプション
よくパスワードの攻撃はこっから使われてるとか言われてますよね。
| ディレクトリ | 説明 |
|---|---|
| words | 英語の単語リスト |
/usr/share/man 直下
オンラインマニュアル
オプション
| ディレクトリ | 説明 |
|---|---|
| man1 | ユーザプログラム |
| man2 | システム呼び出し |
| man3 | ライブラリ呼び出し |
| man4 | 特殊ファイル |
| man5 | ファイルフォーマット |
| man6 | ゲーム |
| man7 | その他 |
| man8 | システム管理者 |
/var 直下
可変データ
必須
| ディレクトリ | 説明 |
|---|---|
| cache | アプリケーションキャッシュデータ |
| lib | 可変状態情報 |
| local | /usr/local用の可変データ |
| lock | ロックファイル |
| log | ログ・ファイルとそのディレクトリ |
| opt | /opt用の可変データ |
| run | 実行中プロセスの関連データ |
| spool | アプリケーションの構成データ |
| tmp | システムの再起動の間保持される一時ファイル |
オプション
| ディレクトリ | 説明 |
|---|---|
| account | プロセスアカウンティングログ |
| crash | システムクラッシュダンプ |
| games | 可変ゲームデータ |
| ユーザのメールボックスファイル | |
| yp | ネットワーク情報サービスのDBファイル |
別館
/bin
setserialを追加する
/dev
| ディレクトリ | 説明 |
|---|---|
| /dev/null | スペシャルファイルで、ここに吐出されたものを全て捨てる。よくバッチファイルなどで要らないエラーログをここに吐いてると思う。 |
| /dev/zero | dev/nullと同じ様なものだが、違うのがパーティションの全データを破壊する時にこいつinputにして突っ込んだり |
| /dev/tty | 制御端末 |
後口上
最後の方適当にまとめてしまいました。一旦まとめただけで、説明を省いてしまったのでわかりづらいかもしれません。
この記事は、以下を読み引用しています。
FHS2.3