ディレクトリ
ディレクトリ (英: directory) は、コンピュータのファイルシステムにおいて、ファイルをグループ化するための特殊なファイルで、整理・管理などの目的で活用される。ディレクトリの中にも、通常のファイルだけでなく入れ子的にディレクトリを作って、任意の階層を持たせて管理できることがほとんどである。
ファイルの入れ物(容器)などとも表現され、GUIでは文具のフォルダーのようなメタファーで表現されることが多い。
セパレータは、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) により標準化が図られている。