Next: Relative File Names, Previous: File Name Components, Up: File Names
ディレクトリ名(directory name)とはディレクトリの名前です。 ディレクトリはファイルの一種であり、ファイル名を持ちますが、 それはディレクトリ名に関連付けられますが同一ではありません。 (これはUNIXの通常の用語と同じではない。) 同じものに対するこれらの異なる2つの名前は、構文の変換で関連付けます。 UNIXではこれは簡単であり、ディレクトリ名はスラッシュで終りますが、 ファイルとしてのディレクトリの名前にはスラッシュはありません。 VMSでは、関係はより複雑です。
ディレクトリ名とそのファイルとしての名前との違いはわずかですが重大です。 Emacsの変数や関数引数がディレクトリ名と記述されているときには、 ディレクトリのファイルとしての名前は受け付けません。
つぎの2つの関数はディレクトリ名とファイルとしての名前を相互に変換します。 これらは、‘$HOME’などの環境変数置換や ‘~’や‘..’などの構造にはなにも特別なことはしません。
この関数は、オペレーティングシステムが ディレクトリ名と解釈する表現で表したfilenameの文字列を返す。 UNIXでは、文字列に(最後にスラッシュがなければ)スラッシュを 付加することを意味する。 VMSでは、[X]Y.DIR.1の形の文字列を[X.Y]の形に変換する。
(file-name-as-directory "~rms/lewis") "~rms/lewis/"
この関数は、オペレーティングシステムが ファイルの名前と解釈する表現で表したdirnameの文字列を返す。 UNIXでは、文字列の最後のスラッシュを取り除くことを意味する。 VMSでは、[X.Y]の形の文字列を[X]Y.DIR.1の形に変換する。
(directory-file-name "~lewis/") "~lewis"
シンボリックリンクを介して通常参照されるディレクトリには ディレクトリ名の省略形が有用です。 ユーザーはリンクの名前をディレクトリの『名前』としばしばみなし、 ディレクトリの『本当の』名前を見るのをわずらわしく思うことがあります。 リンク名を『本当の』名前の省略形と定義しておくと、 Emacsはユーザーに省略形を表示します。
変数
directory-abbrev-alist
は、 ディレクトリに使う省略形の連想リストを保持する。 各要素は(
from.
to)
の形であり、 ディレクトリ名にfromが現れるとこれをtoに置き換えることを指示する。 文字列fromは実際には正規表現であり、つねに‘^’で始まること。 関数abbreviate-file-name
がこれらの置換を行う。ファイルsite-init.elでこの変数に設定し、 読者のサイトに適した省略形を記述できる。
ファイルシステム/home/fsfなどをシンボリック名/fsfで通常参照する システムの例をつぎに示す。
(("^/home/fsf" . "/fsf") ("^/home/gp" . "/gp") ("^/home/gd" . "/gd"))
ディレクトリ名をその省略形に変換するには、つぎの関数を使います。