以下の関数は全て(パス名として解釈される)ストリングに対し操作を行なうため、似 ています。これらは(全て)実際のファイルやディレクトリに関する情報を返すため、 そのアーギュメントは(特に別様に記されていない限り)全て実際のファイルやディレ クトリとして存在していなくてはいけません。
これらの多くは (ストリングでなくてはいけない) パス名のアーギュメントを1つ持ち ます。このパス名は expand-file-name を用いて展開されるため、 (../ を含む)相対 パス名同様、 も正しく扱われます。環境変数 ($HOME 等) は展開されません。
Function: file-modes file-name
この関数は、 file-name のモードビットを integer として返します。このモード ビットは通常 unix のモードビットです。 low-order のビットが 1 の場合、他の 人がそのファイルを実行することができ、2 番目に lowest-order のビットが 1 の場合、他の人が書き込むことができる等。
返すことのできる最大値 4095 (8進で 7777) は、全ての人が読み込み、書き込 み、実行のパーミッションを持ち、そのファイルには others と group に対する suid がセットされており、sticky bit がセットされていることを意味します。
(例が混乱している!!)
(file-modes " /junk/diffs") => 492 (set-file-modes " /junk/diffs" 4095) => nil
lewis@slug[43] % ls -l diffs -rwxr-xr-- 1 lewis 0 3063 Oct 30 16:00 diffs
Function: file-directory-p pathname
この関数は、 pathname が既存のディレクトリの場合 t を返し、そうでない場合 nil を返します。
(file-directory-p "~rms") => t (file-directory-p "~rms/lewis/file.texinfo") => nil (file-directory-p "~rms/lewis/no-such-file") => nil (file-directory-p "$HOMES") => nil (file-directory-p (substitute-in-file-name "$HOME")) => t
Function: file-exists-p pathname
この関数は、 pathname が存在する場合 t を返します。これは必ずしもそのファ イルを読むことができることを意味しません。これは "それが存在するディレクト リにおいてそのディレクトリリストを出すことができる" ことのみを意味します。
"pathname を含むディレクトリにおいてディレクトリリスティングを行なう" パー ミッションを持ってない場合、この結果は nil になります。
Function: file-readable-p pathname
この関数は、 pathname が存在しそれをあなたが読むことができる場合 t を返 し、そうでない場合 nil を返します。
(file-readable-p "file.texinfo") => t (file-exists-p "/usr/spool/mqueue") => t (file-readable-p "/usr/spool/mqueue")
=> nil
Function: file-newer-than-file-p pathname1 pathname2
この関数は、ファイル pathname1 がファイル pathname2 より新しい場合、t を返 します。 pathname1 が存在しない場合、nil を返します。 pathname2 が存在しな い場合、t を返します。
例において、ファイル `aug-19' は 19日に書かれ、`aug-20' は 20日に書かれた とします。ファイル `no-file' は存在しません。
(file-newer-than-file-p "aug-19" "aug-20") => nil (file-newer-than-file-p "aug-20" "aug-19") => t (file-newer-than-file-p "aug-19" "no-file") => t (file-newer-than-file-p "no-file" "aug-19") => nil
Function: file-name-all-versions file dirname
Type Primitive Function SourceFile dired.c ディクトリ dir (訳注:dirname の誤まりでは?)中のファイル名 file の全バージョンのリストを返します。
Function: file-nlinks pathname
この関数は、ファイル pathname の持つ名前(i.e., ハードリンク) の数を返しま す。ファイルが存在しない場合、nil を返します。
mercury>ls -l foo* -rw-rw-rw- 2 rms 4 Aug 19 01:27 foo -rw-rw-rw- 2 rms 4 Aug 19 01:27 foo1
(file-nlinks "foo") => 2 (file-nlinks "doesnt-exist") => nil
Function: file-symlink-p pathname
pathname がシンボリックリンクの場合、file-symlink-p はそれがリンクされてい るファイルの名前を返します。 pathnameがテキストファイルにリンクされていよ うと、ディレクトリにリンクされていようと、また別のシンボリックリンクにリン クされていようと (2 番目のリンクをたどることはないでしょうが) 違いはありま せん。
pathname がシンボリックリンクでない場合、file-symlink-p は nil を返しま す。 pathname が存在している必要はありません。
(file-symlink-p "foo") => nil (file-symlink-p "sym-link") => "foo" (file-symlink-p "sym-link2") => "sym-link" (file-symlink-p "/bin") => "/pub/bin"
Function: file-writable-p pathname
ユーザーに対し、 pathname が書き込み(もしくは作成)可能な場合、t を返しま す。 "ファイルが存在し、それに書き込むことができる" 場合、それは書き込み可 能(訳注:writable)です。 "ファイルは存在しないが、それが(そこに)存在しなく てはいけないディレクトリが存在し、そのディレクトリに対する書き込みが可能" な場合も書き込み可能です。そうでない場合、file-writable-p は nil を返しま す。
以下に示す例の 3 番目のものにおいて、(ユーザーは)それを作ることはできる が、その親ディレクトリが存在しないため、 foo は書き込み可能ではありませ ん。
(file-writable-p "~rms/foo") => t (file-writable-p "/foo") => nil (file-writable-p "~rms/no-such-dir/foo") => nil
Function: file-attributes pathname
ファイル pathname の属性のリストを返します。指定されたファイルをオープンす ることができない場合、nil を返します。
リストの要素は順に、