ディレクトリ

ディレクトリ ( : directory) は、 コンピュータファイルシステムにおいて、 ファイルをグループ化するための特殊なファイル [1]で、整理・管理などの目的で活用される。ディレクトリの中にも、通常のファイルだけでなく入れ子的にディレクトリを作って、任意の階層を持たせて管理できることがほとんどである。初心者向けの解説書などではファイルの入れ物(容器)などと表現されることもある(ただし、実際には、入れ物(容器)であるのはメディアそのものであって、ディレクトリは「ファイルへの見出し [2]の入れ物」である)。

概要

UnixMS-DOS、3.1以前の Windowsなどでは「ディレクトリ」と呼び、 Mac OSでは「フォルダ」と呼んでいる。95以降のWindowsではフォルダと呼び直したが実態には何の違いも無かったように、呼び方の違いには(マーケティング上の印象以上の)意味は全く何もない。

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

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

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

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

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

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

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

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

他の言語で
azərbaycanca: Qovluq
català: Directori
Esperanto: Dosierujo
español: Directorio
euskara: Direktorio
हिन्दी: फोल्डर
Bahasa Indonesia: Direktori
italiano: Directory
한국어: 디렉토리
Kurdî: Peldank
lumbaart: Directory
олык марий: Папке
Bahasa Melayu: Direktori
Nederlands: Directory
srpskohrvatski / српскохрватски: Direktorij
Simple English: Folder (computing)
shqip: Kartoteka
српски / srpski: Директоријум