ディレクトリ

ディレクトリ () は、コンピュータのファイルシステムにおいて、ファイルをグループ化するための特殊なファイルで、整理・管理などの目的で活用される。ディレクトリの中にも、通常のファイルだけでなく入れ子的にディレクトリを作って、任意の階層を持たせて管理できることがほとんどである。

ファイルの入れ物（容器）などとも表現され、GUIでは文具のフォルダーのようなメタファーで表現されることが多い。ただし、物理的な容器であるのはHDDなどのメディアそのものであるので、ディレクトリは「ファイルへの見出しの入れ物」と表現する方が正確である。

概要

UnixやMS-DOS、3.1以前のWindowsなどでは「ディレクトリ」と呼び、Mac OSでは「フォルダ」と呼んでいる。Windows 95以降のエクスプローラーでは仮想的な階層構造であるシェル名前空間が導入され、フォルダと呼称するようになった。例えば、コントロールパネルやネットワーク、圧縮フォルダーなどは、ファイルシステム上のディレクトリとは異なる仮想的なフォルダである。

Unixなどでは唯一の最上位の根幹（ルート、ルートディレクトリ）があり、ストレージやボリューム（パーティションなど）の内容は、任意の枝（マウントポイント）にマウント（接ぎ木）される、というツリー（木）モデルとなっている。それに対し、MS-DOSおよびWindowsでは、最上位は「ドライブ」という単位であり（フロッピーの場合で明らかなように、ディスク単位ではない。なお、パーティションなどに対しドライブを割り当てていることは多い）、各ドライブに対してそれぞれのメディアのルートディレクトリがあって、それぞれのツリーがある、という（数学では「林」あるいは「森」と呼んで、「木」と区別することがある）ようなモデルとなっている。

ディレクトリにより任意の深さの（実際には後述する絶対パスの最大長などとして制限があることも多いが）階層を構成することが可能なシステムでは、システムコール上のファイルの指定を、カレントディレクトリ（後述）の移動とファイルの指定のようにして別々に行わなければならないシステムもあるが、Unixなど多くのように「ディレクトリ名/ディレクトリ名/ディレクトリ名/ファイル名」のようにセパレータ（分離符）で分離する表現によりいっぺんに行えるものもある。セパレータは、Unixでは '/'（スラッシュ）、MS-DOSでは '\'（コードが 0x5c の文字）であるが、MS-DOSのセパレータの 0x5c というコードは ASCII ではバックスラッシュだが、JIS X 0201 では半角円記号（U+00A5、'¥'）であるなど ISO 646 であえて統一化されず残されたコードであったためもあり、その意味に混乱させられている者が多い。

（セパレータが使えるシステムでは）先頭をセパレータで始めるなどの方法により、ルートディレクトリからの絶対的な表現で指定したパスを「絶対パス」や「フルパス」と呼ぶ。それに対して、カレントディレクトリ（後述）など、なんらかの任意のディレクトリから相対的に（「相対パス」）指定することもできる。

Unixなどでは、プロセスの持つ属性として、カレントディレクトリ（あるいはワーキングディレクトリ）がある。そのプロセスが発行するシステムコール中において、相対パスで指定された場合の起点としてなど「デフォルトのディレクトリ」として使われる。子プロセスの起動時には、その時点での親プロセスのカレントディレクトリが引き継がれるか、明示的に指定することができるものもある。原則として子プロセスは親プロセスに影響を与えることができないため、「シェルのカレントディレクトリを変更する」というコマンドは外部コマンドとして実装することができないので、必ずシェルの内部コマンドとして実装される。

Unixにはディレクトリの内容を表示する外部コマンドとして ls コマンドがあり、Domain/OSには、相当するコマンドとして ldがある。なお、MS-DOSのCOMMAND.COMには、相当する機能を持つ内部コマンド dir があり、DISK-BASICには、相当するコマンドとしてfilesとlfilesがある。

Unixなどでは、ユーザ毎にホームディレクトリが設定されており（passwdファイルなどで）、そのユーザのログイン後の最初のプロセス（通常はシェル）の初期カレントディレクトリがそれになる。通常、そのユーザが所有者で読書き可能に設定されており、その下にユーザー個人のファイルを置くことが多い。

Unixをはじめ多くのシステムでは、ディレクトリ中のファイル名（正確には、「ディレクトリエントリ」）の順番をユーザが編集することはできない（Unixのlsコマンドや、シェルでの * による展開では、通常はソートされるためわからないが、lsの -f オプションなどで実際の順番を確認できる）が、MS-DOSでは比較的容易に直接ディスクの内容を改変して編集できたため、FDやマイクロデータの「エコロジー」シリーズなど、そのような編集機能を持つファイル管理ソフトもあった。

商用UNIXや、FreeBSDなどいわゆるBSD系のシステムでは、GNU/Linuxにおけるcoreutilsに相当するような基本的なユーティリティ類は全て、カーネルと同じプロジェクトとして維持管理されているいわゆるベースシステムに含まれているため、通常は各システムのデフォルトの配置が使用されるため問題が起きることは少ないが、GNU/Linuxでは以前はディストリビューションごとにまちまちであったために面倒な作業などが必要になることがあったため、Filesystem Hierarchy Standard (FHS) により標準化が図られている。

符号位置
GUI で表現されるディレクトリ（フォルダ）のアイコンは、絵文字として  6.0 から収録されている。

注

外部リンク 

のディレクトリ構成
のディレクトリ構造の一覧（）
FHSにおけるディレクトリ構成
第2回　各ディレクトリの役割を知ろう（ルートディレクトリ編）
第3回　各ディレクトリの役割を知ろう（サブディレクトリ編）
及びのファイルシステムの構造

OSのファイルシステム
分類