Next: Relative File Names, Up: File Names [Contents][Index]
オペレーティングシステムは、ファイルをディレクトリーにグループ化します。あるファイルを指定するためには、ディレクトリーと、そのディレクトリー内でのファイルの名前を指定しなければなりません。それゆえ、Emacsはファイル名をディレクトリー名パートと非ディレクトリー(またはディレクトリー内ファイル名)パートという、2つの主要パートから判断します。どちらのパートも空の場合があり得ます。これら2つのパートを結合することにより、元のファイル名が再作成されます。
ほとんどのシステムでは、最後のスラッシュ(MS-DOSおよびMS-Windowsではバックスラッシュも許される)までのすべてがディレクトリーパートです。残りが非ディレクトリーパートです。
ある目的のために、非ディレクトリーパートはさらに正式名称(the name proper)とバージョン番号に細分されます。ほとんどのシステムでは、名前にバージョン番号をもつのは、バックアップファイルだけです。
この関数は、filenameのディレクトリーパートをディレクトリー名(Directory Namesを参照)としてリターンする。filenameがディレクトリーパートを含まない場合は、nilをリターンする。
GNUおよびUnixシステムでは、この関数がリターンする文字列は常にスラッシュで終わる。MS-DOSでは、コロンで終わることもあり得る。
(file-name-directory "lewis/foo") ; Unixの例
⇒ "lewis/"
(file-name-directory "foo") ; Unixの例
⇒ nil
この関数は、filenameの非ディレクトリーパートをリターンする。
(file-name-nondirectory "lewis/foo")
⇒ "foo"
(file-name-nondirectory "foo")
⇒ "foo"
(file-name-nondirectory "lewis/")
⇒ ""
この関数は、任意のファイルバージョン番号、バックアップバージョン番号、末尾のチルダを取り除いてfilenameをリターンする。
keep-backup-versionが非nilの場合は、ファイルシステムなどが理解するような真のファイルバージョン番号は破棄されるが、バックアップバージョン番号は保持される。
(file-name-sans-versions "~rms/foo.~1~")
⇒ "~rms/foo"
(file-name-sans-versions "~rms/foo~")
⇒ "~rms/foo"
(file-name-sans-versions "~rms/foo")
⇒ "~rms/foo"
この関数は、filenameからもしあればすべてのバージョン番号とバックアップ番号を取り除いた後、終端の“拡張子(extension)”をリターンする。ファイル名の拡張子とは、最後の名前コンポーネント(からすべてのバージョン番号とバックアップ番号を取り去った後)の最後の‘.’に後続するパートである。
この関数は、fooのような拡張子のないファイル名にたいしては、nilをリターンする。foo.のようなnull拡張子にたいしては、""をリターンする。ファイル名の最終コンポーネントが‘.’で始まる場合、その‘.’は拡張子の開始とはみなされない。したがって、.emacsの拡張子は‘.emacs’ではなくnilである。
periodが非nilの場合、拡張子を区切るピリオドもリターン値に含まれるようにななる。その場合、もしfilenameが拡張子をもたないなら、リターン値は""である。
この関数は、もしあればfilenameから拡張子を除いてリターンする。もしバージョン番号またはバックアップ番号があるなら、ファイルが拡張子をもつ場合のみ、それを削除する。たとえば、
(file-name-sans-extension "foo.lose.c")
⇒ "foo.lose"
(file-name-sans-extension "big.hack/foo")
⇒ "big.hack/foo"
(file-name-sans-extension "/my/home/.emacs")
⇒ "/my/home/.emacs"
(file-name-sans-extension "/my/home/.emacs.el")
⇒ "/my/home/.emacs"
(file-name-sans-extension "~/foo.el.~3~")
⇒ "~/foo"
(file-name-sans-extension "~/foo.~3~")
⇒ "~/foo.~3~"
最後の2つの例の‘.~3~’は、拡張子ではなくバックアップ番号であることに注意。
この関数は、file-name-sans-extensionとfile-name-nondirectoryを組み合わせたものである。たとえば、
(file-name-base "/my/home/foo.c")
⇒ "foo"
filename引数のデフォルトは、buffer-file-nameである。