8. ファイルの階層構造

これまでで一般的なファイルの操作について説明してきました。

ところでUNIXではファイルは階層化されています。
ここでは階層化されたファイルの概念と扱い方を説明します。

8.1 ディレクトリ

コンピュータをしばらく使っていると結構ファイルが増えて来て、そのうちどのファイルが何のためのものだったのか判らなくなるものです。
ls コマンドで一覧を見たら一画面では収まり切らなくなったりして大変な状況の人も出てくるでしょう。

そうならないために例えばファイルの名前を長くして、その名前を見ればファイルの内容の想像が付くようにするなど利用者は色々な対策を取ったりします。
しかしそういう手法で全てが解決するわけでもありませんね。

ファイルの一覧を見るで、UNIXが扱うファイルはあなたの机の上に並ぶファイルのようなものだと言いました。
もしもあなたの机の上にファイルが非常にたくさん並びはじめ、ファイルの背表紙にちょっと長めの名前を書いておくくらいでは目的のファイルがどこにあるのかすぐに探せなくなってしまったとしましょう。

あなたはどうしますか?

多くの人は「整理が必要だ」と感じるでしょう。
ファイルを分類し、分類ごとに大きな区分を作ってファイルを束にして置いておけば良いというわけです。

分類とは物事を階層化して整理するということです。
まず大分類があって、それから中分類、更に必要なら小分類、という感じですね。

以下に日常的な机の上の分類の例を示します。
四角で分類、丸でファイルを表しています。

階層化された分類の例(1)

階層化された分類の例(1)

UNIXでもファイルを階層化して整理することが可能です。
以下に先の例に合うような階層化を行ったファイルの配置の例を示します。

階層化された分類の例(2)

階層化された分類の例(2)

しかし実はUNIXコンピュータは yasuda さん一人のものではなくて、数多くの人が同時に使っているということを忘れてはいけません。
コンピュータにとっては、「 yasuda のファイル」という分類がまず最初に既に存在しているのです。

階層化された分類の例(3)

階層化された分類の例(3)

そして「yasuda のファイル」は以下のようにもっと大きな分類の下に配置されているのです。

階層化された分類の例(4)

階層化された分類の例(4)

上の例での「yasuda のファイル」より一つ大きい分類の名前は「g840」です。
これは「ある年度に入学してきた学生のファイル」という意味の分類です。

これよりもう少し上の存在として「全ての利用者のファイル」というものが有り、更にたどって行くと最終的に「全てのファイル」という最大の分類に到達します。
先ほどからの例では四角で表してきた、ファイルの分類なるものの存在をUNIXでは「ディレクトリ」と呼んでいます。
そして、先ほどの「全てのファイル」という最大の分類、つまり分類の根本(もしくは頂上)なるものの存在を「ルートディレクトリ」もしくは「トップディレクトリ」などと呼んでいます。

「yasuda のファイル」は実は yasuda という名前が付いたディレクトリなのです。
この、利用者ごとに割り当てられた利用者自身のためのディレクトリを「ホームディレクトリ」と呼んでいます。
ホームディレクトリは常に利用者のユーザIDが付けられて、利用者登録の際にシステム管理者の手によって作成されます。
利用者は自分のホームディレクトリ以下に自分のファイルもしくはディレクトリを作り、保存することができます。

いくつかのディレクトリを挙げましたが、いずれにしてもディレクトリには違い有りません。

UNIXのディレクトリとファイルの構造を見ると、それが木の根の構造のように見えると思います。
また上下をひっくり返せばルートディレクトリを根にしてディレクトリの分類過程が枝のように、そしてファイルが葉のように見えるかもしれません。
このようなイメージで表せる構造のことをコンピュータの世界では「木構造」「ツリー構造」と呼んでいます。
ディレクトリの木構造をディレクトリ・ツリーなどと呼んだりします。

ところでUNIXではディレクトリはファイルの一種として扱われます。(扱われる、のです。普通のファイルとディレクトリはその意味に違いがあります。)
そのため「ディレクトリファイル」などと表現されるときもあります。

ディレクトリもファイルと同じ様に名前を付けてそれを他のものと区別して扱います。名前のルール(名前に利用できる文字、文字数の制限など)は普通のファイルと同じです。


Yutaka Yasuda (yasuda@bakkers.gr.jp)