ディスクなど補助記憶装置に記録した、ファイルの登録簿のこと。
この登録簿には、ファイル名やファイルサイズ、ファイル更新日(タイムスタンプ)、ディスク上の位置などの情報が記録され、この登録簿自体もファイルと同様にディスクに記録される。
そして、保存ファイルの一覧を表示する場合は、このディレクトリの情報が読み出される。
また、このディレクトリは階層化することが可能である。
UNIX
UNIXでいつごろ階層ディレクトリ機能が作られたのかは定かではない。
しかし必要に迫られ、ファイルシステムにその機能が導入されたと考えられる。
CP/MとDOS
CP/Mやその流れを汲むMS-DOSバージョン1の頃は、階層ディレクトリという機能は無く、全てのファイルは今で言うところのルートディレクトリに格納された。
この当時、ディスクと言えばフロッピーディスクしかなく、容量的にもこれでも充分だったからである。
MS-DOSで階層ディレクトリ機能に対応したのはバージョン2以降である。但し、OSとしては階層ディレクトリ機能は使っていない。MS-DOSというOSは実質、ルートディレクトリにIO.SYS、MSDOS.SYS、COMMAND.COMという3ファイルがあれば成立するからである。
UNIXやMicrosoft Windowsなどの近代的なオペレーティングシステム(OS)のファイルシステムでは、ユーザーが自由に新しいディレクトリを作ることができ、新しく作られたディレクトリは既存のディレクトリに登録される。
こうしてファイルをディスクに記録する時に登録するディレクトリを任意に選択することで、大量のファイルを整理・分類できる。
この仕組みは「階層ディレクトリ(構造)」と呼ばれ、最も上位のディレクトリを「ルートディレクトリ」、それ以外のものを「サブディレクトリ」という。
GUIを採用したOSでは、このディレクトリはもっぱら「フォルダー」と称されるが、具体的な機能や構造・内容などは全く同じものであり、同義と考えても差し支えない。
ファイルの登録簿がどのような構造で管理されるかは、OSやファイルシステムにより異なるため一概には言えないが、一定の構造を持ったファイルとして扱われることが多いと思われる。
例えば、MS-DOSやMicrosoft WindowsのFATファイルシステムでは、1エントリ32バイトの構造を持ったバイナリファイルが正体である。最初にディレクトリ(フォルダー)が作られた時に一定サイズがドライブに確保され、不足した場合は適時サイズが増えてゆく。
そして通常のファイルと区別するために、ファイル属性としてディレクトリのフラグを立てている。実装としてはシンプルである。
このような機構になったのは、大昔のCP/MやMS-DOSバージョン1ではディレクトリ機能を持っておらず、MS-DOSバージョン2から後づけで機能が追加されたという理由もあるものと思われる。
データやプログラムは様々なディレクトリに置かれうる。時にプログラムは、外部のファイルを読み込んだりするために、自分からの相対位置を指定する必要が出てくる。
ルートディレクトリからの位置を表わすものを絶対パス、自分が今いるディレクトリ(カレントディレクトリ)からの相対位置を表わすものを相対パスという。
例えば、/home/hogehoge/public_html/cgi-bin/bbs.cgiというパスがあったとして、カレントディレクトリが/home/hogehoge/public_htmlのとき、cgi-bin/bbs.cgiのように表現するのを相対パスという。
また、この相対パスを表現するために、.や..という表現方法が存在する。
.はカレントディレクトリを表わす。..は一つ上のディレクトリを表わす。
その正体はOSやファイルシステムにより異なるが、MS-DOSやWindowsのFATファイルシステムの場合、実はディレクトリを作った時に自動でその先頭に.と..という二つのエントリが作成され、OSはこの情報を参照して動作している。つまり、一見空に見えるディレクトリでも、.と..という二つのディレクトリエントリは常に存在しているわけである。
UNIXでは、ルートディレクトリ以下をどのような構成にするか、特別な規定は無いようである。
このため、大まかなところは似通っているが、同じ名前のディレクトリが同じ機能・目的用とは限らない。
FreeBSDの一般的なディレクトリ構造は、次のようになっている。他のBSD、例えばNetBSDなども、多少差はあるが、概ねにおいて同様である。
- / ‐ ルートディレクトリ
- /bin ‐ 重要なユーザーユーティリティ
- /boot ‐ 起動時に使われるプログラムと設定ファイル
- /boot/defaults ‐ デフォルトの起動設定ファイル
- /dev ‐ デバイスノード
- /etc ‐ システム設定ファイルとスクリプト
- /etc/defaults ‐ デフォルトのシステム設定ファイル
- /etc/mail ‐ メール転送エージェント(MTA)用の設定ファイル
- /etc/namedb ‐ named用の設定ファイル
- /etc/periodic ‐ cron用のスクリプト
- /etc/ppp ‐ pppの設定
- /mnt ‐ 一時的なマウントポイント
- /proc ‐ プロセスファイルシステム(procfs)
- /rescue ‐ システム復旧用ユーティリティ
- /root ‐ root用のホームディレクトリ
- /sbin ‐ システム管理用バイナリ
- /stand ‐ スタンドアロン環境で使われるプログラム
- /tmp ‐ テンポラリファイル
- /usr ‐ 大部分のユーザーユーティリティとアプリケーション
- /usr/bin ‐ よく使う各種のコマンド類
- /usr/include ‐ Cの標準ヘッダーファイル
- /usr/lib ‐ ライブラリ
- /usr/libdata ‐ 各種ユーティリティ用データファイル
- /usr/libexec ‐ システムデーモンやシステムユーティリティ
- /usr/local ‐ ローカルのプログラムやライブラリ類
- /usr/obj ‐ /usr/srcのMake時に生成したオブジェクトデータの格納先
- /usr/ports ‐ FreeBSD ports集 (オプション)
- /usr/sbin ‐ (ユーザーが実行する)システム管理用バイナリ
- /usr/share ‐ アーキテクチャーに依存しないデータ
- /usr/src ‐ BSDのソースファイルなど
- /usr/X11R6 ‐ X11R6のプログラムやライブラリ類 (オプション)
- /var ‐ ログや一時ファイル等、各種用途
- /var/log ‐ 各種のシステムログファイル
- /var/mail ‐ ユーザーのメールボックスファイル
- /var/spool ‐ プリンターやメールシステムのスプールデータ
- /var/tmp ‐ システムが再起動しても消えないテンポラリファイル
- /var/yp ‐ NISのデータベースファイル
Linuxは様々なLinuxディストリビューションが存在するという都合からか、ディレクトリ構成については標準化が進められている。その標準の一つ、FHS 2.3では次のようなディレクトリ構成が規定されている。
オプションでないものは必須である。
- / ‐ ルートディレクトリ
- /bin ‐ 必須ユーザーコマンドバイナリ(全ユーザー用)
- /boot ‐ ブートローダー用の静的なファイル
- /dev ‐ デバイスファイル
- /etc ‐ ホスト特有のシステム設定ファイル
- /etc/opt ‐ /opt用の設定ファイル
- /etc/X11 ‐ X Window System用の設定 (オプション)
- /etc/sgml ‐ SGML用の設定ファイル (オプション)
- /etc/xml ‐ XML用の設定ファイル (オプション)
- /home ‐ ユーザーのホームディレクトリ (オプション)
- /lib ‐ 必須共有ライブラリとカーネルモジュール
- /lib<qual> ‐ 代替形式の必須共有ライブラリ (オプション)
- /media ‐ リムーバブルメディア用のマウントポイント
- /mnt ‐ 一時的なマウントポイント
- /opt ‐ 追加アプリケーションソフトウェア
- /proc ‐ プロセスファイルシステム(procfs)
- /sys ‐ システムファイルシステム(sysfs)
- /root ‐ root用のホームディレクトリ (オプション)
- /sbin ‐ システム管理用バイナリ
- /srv ‐ システムサービス用のデータ
- /tmp ‐ テンポラリファイル
- /usr ‐ 各種プログラムなど
- /usr/bin ‐ 殆どのユーザー用のコマンド類
- /usr/include ‐ Cの標準ヘッダーファイル
- /usr/lib ‐ プログラミングとパッケージ用のライブラリ
- /usr/lib<qual> ‐ 代替形式のライブラリ類 (オプション)
- /usr/local ‐ ローカルのプログラムやライブラリ類
- /usr/local/share ‐ アーキテクチャーに依存しないデータ
- /usr/sbin ‐ さほど不可欠でない標準のシステムバイナリ
- /usr/share ‐ アーキテクチャーに依存しないデータ
- /usr/share/dict ‐ 各種の辞書類 (オプション)
- /usr/share/man ‐ マニュアル
- /usr/share/misc ‐ 雑多なアーキテクチャーに依存しないデータ
- /usr/share/sgml ‐ SGMLデータ (オプション)
- /usr/share/xml ‐ XMLデータ(オプション)
- /usr/src ‐ Linuxのソースファイルなど (オプション)
- /usr/X11R6 ‐ X11R6のプログラムやライブラリ類 (オプション)
- /var ‐ ログや一時ファイル等、各種用途
- /var/account ‐ プロセスログ (オプション)
- /var/cache ‐ アプリケーションキャッシュデータ
- /var/cache/fonts ‐ フォントキャッシュ (オプション)
- /var/cache/man ‐ マニュアルキャッシュ (オプション)
- /var/crash ‐ システムクラッシュダンプ (オプション)
- /var/games ‐ ゲームデータ (オプション)
- /var/lib ‐ 可変ステータス情報
- /var/lib/<editor> ‐ エディターバックアップファイルと設定 (オプション)
- /var/lib/hwclock ‐ 内部時計のステータス (オプション)
- /var/lib/misc ‐ 雑多な可変データ
- /var/lock ‐ ロックファイル
- /var/log ‐ ログファイルとディレクトリ
- /var/mail ‐ ユーザーのメールボックスファイル (オプション)
- /var/opt ‐ /opt用可変データ
- /var/run ‐ ランタイム用可変データ
- /var/spool ‐ プリンターやメールシステムのスプールデータ
- /var/spool/lpd ‐ ラインプリンターデーモンのプリントキュー (オプション)
- /var/spool/rwho ‐ rwhod(システムステータスサーバー)ファイル (オプション)
- /var/tmp ‐ システムが再起動しても消えないテンポラリファイル
- /var/yp ‐ NISのデータベースファイル
Androidのディレクトリ構成は独特である。
OS自体はLinuxだが、Androidが組み込み用のOSであること、シングルユーザーが前提であることなど、一般的なLinuxとは用途が異なるためと思われる。
ルート直下は次の通り。詳細はAndroidのディレクトリ構成を参照。
- / ‐ ルートディレクトリ
- /config
- /cache
- /persist
- /sdcard ‐ /mnt/sdcardへのシンボリックリンク
- /acct
- /mnt ‐ マウントポイント
- /vendor ‐ /system/vendorへのシンボリックリンク
- /d ‐ /sys/kernel/debugへのシンボリックリンク
- /etc ‐ /system/etcへのシンボリックリンク
- /system
- /sys
- /sbin ‐ システム管理用バイナリ
- /proc ‐ プロセスファイルシステム
- /data
- /root ‐ root用のホームディレクトリ
- /dev ‐ デバイスファイル
Microsoft Windowsは16ビット時代と32ビット時代で大きく仕様が違う。また、32ビットWindowsでも、Windows 2000までとWindows XP以降ではかなり違う。その上、元々はシングルユーザーOSだったため、あまりマルチユーザー向きの構造をしていない。
Windowsのシステムファイルは、Windows 95/98系は「\Windows」、Windows NT/2000は「\WINNT」、Windows XPは「\Windows」に、それぞれ存在している。
以下は、Windows XPの例である。
- \Documents and Settings ‐ ユーザーの各種設定やデータ
- \Documents and Settings\Administrator ‐ Administrator用
- \Documents and Settings\All Users ‐ 全ユーザー用
- \Documents and Settings\Default User ‐ 雛形
- \Documents and Settings\<username> ‐ username用
- \Program Files ‐ アプリケーション
- \Program Files\Common Files ‐ 複数のプログラムが共通で利用するファイル
- \WINDOWS ‐ Windowsのシステムファイル類
- \WINDOWS\Cursors ‐ カーソル
- \WINDOWS\Fonts ‐ フォント
- \WINDOWS\Help ‐ ヘルプファイル
- \WINDOWS\Media ‐ 音楽や動画類
- \WINDOWS\system ‐ 16ビットバイナリ等
- \WINDOWS\system32 ‐ Windows XP用のシステム関係
- \WINDOWS\Temp ‐ テンポラリファイル置き場
関連する用語
ディレクトリエントリ
フォルダー
ルートディレクトリ
カレントディレクトリ
ホームディレクトリ
.
..
タイムスタンプ
ディレクトリサービス
深い
/lost+found