3.3 ディレクトリ構造

ディレクトリの中にはいくつかのディレクトリを入れることができ,その中には,さらにまたディレクトリを入れることができます.外側の大きい方のディレクトリを親ディレクトリ,中に入っている方を子ディレクトリ,またはサブディレクトリと呼びます.これを絵に描くとき,例えば directoryA の中に directoryB とfile3 があるとすると,directoryA の下に directoryB と file3 を書いて,線で結びます.さらにdirectoryB の中に入っているファイルも同じようにして書いていきます.すると,木を逆さにしたような形になるので,これをツリー構造(tree structure)と呼びます.根にあたるところ(図では一番上)に一番大きなディレクトリがあり,そこから枝別れするところにディレクトリがあり,そして葉にあたるところには通常ファイルがあります.

ファイルのパス名

CNSでは,すべてのファイルは巨大なツリー構造のどこかに位置しており,ディレクトリをたどっていくことによってアクセスすることができます.この時,そのファイルの位置を表すものを,そのファイルのパス名(path name)と呼びます.

パス名には,絶対パス名(absolute path name)相対パス名(relative path name)があります.

普通のパソコンでは,ファイルはそのパソコンのハードディスクに保存されるため,他のパソコンから直接使うことはできません.しかし,CNS では,ホームディレクトリ内のファイルはメディアセンター内にあるファイルサーバというコンピュータに保存され,ネットワークを通 して読み書きするため,どのコンピュータにログインしても同じファイルを使うことができます.

絶対パス

絶対パスは,ツリー構造の一番上から現在自分がいるディレクトリまでの道筋を全てたどることで,現在位置を表します.

現在自分がいるディレクトリの絶対パスを知るためには pwd というコマンドを使います.

% pwd
/a/fs0501a/t01000tf

パス名は,ディレクトリ名を `` / "で区切って表わします.
ツリー構造の一番上にあるディレクトリをルートディレクトリ(root directory)といいます.ルートディレクトリには名前がなく,常に絶対パス名 '/' で示されます.上の例の場合,現在いる位置は,「ルートディレクトリの下の,aというディレクトリの下の,fs0501aというディレクトリの下のt01000tfというディレクトリの下」ということになります.

ログイン名の前に現れるfs0501aとかfs0601aというディレクトリはファイルサーバーの名前で人によって異なります.しかし,誰のホームディレクトリがどのファイルサーバにあるかを覚えるのは大変なので,/a/fs0501a/ や /a/fs0601aという部分をまとめて,``/home" と表わします.

ファイルサーバは何台かのコンピュータで分担してホームディレクトリを保存しているので,本当のホームディレクトリの絶対パス名は /a/fs0501a/t01999xx のようにファイルサーバの番号とログイン名を組み合わせたものになっています.

相対パス

相対パス名はディレクトリをたどる出発点が,ルートディレクトリではなく,現在作業しているディレクトリになります.これをカレントディレクトリ(current directory)またはワーキングディレクトリ(working directory)と呼びます.相対パス名はカレントディレクトリから見た,相対的な位置を表わします.

カレントディレクトリからツリー構造を下にたどっていくときは,ディレクトリ名を '/' で区切って並べます.例えば,上の図で /home/t01000tf がカレントディレクトリであった時, report1 の相対パス名は

ipl/report1

となります.また,/home/t01000tf/ipl がカレントディレクトリの時は

report1

が相対パスとなります.あるファイルを使って作業したいときは,そのファイルが入っているディレクトリをカレントディレクトリにしておくと,相対パスによる指定がファイル名だけになるので,短くて便利です.

ツリー構造を上に向かってたどるときは,ディレクトリ名ではなく, '..' という記号を使います.例えば,上の図で /home/t01000tf/ipl がカレントディレクトリの時,/home/t01000tf の相対パス名は

..

で,/home の相対パス名は

../..

になります.また,/home/t01000tf/test2 の相対パス名は

../test2

になります.

カレントディレクトリ自身の相対パス名は ' . ' で表します.

絶対パスと相対パスは,先頭が,' / ' かどうかで判断されます. また,先頭にある ' ~ ' は,ホームディレクトリを表すことがあります.' ~ ' だけなら自分のホームディレクトリ,' ~ユーザ名 ' ならそのユーザのホームディレクトリを表します.例えば, ~/.signature は自分の署名ファイル, ~t01000tf/.signature は t01000tf というユーザの署名ファイルを 表します.

注意
' ~ ' がホームディレクトリを表すのは省略形なので,ソフトによっては使えない場合もあります.そのような時は絶対パス名 ' /home/ユーザ名 ' を使います.

emacs でファイル名を入力するとき は,ミニバッファに現在のカレントディレクトリ (例えば,ログインした直後はホームディレクトリ ' ~/ ') がすでに入力された状態になるので, 続けて相対パス名を入力すると,全体として絶対パス名になります.あるいは, カレントディレクトリの全部または一部を消去して,任意の絶対パス名を入力することもできます.