Previous: Truenames, Up: Information about Files


24.6.4 ファイルに関する他の情報

本節では、ファイルの内容以外の詳しい情報を得るための関数を説明します。 この情報には、参照パーミッションを制御するモードビット、 所有者とグループの番号、名前の個数、iノード番号、サイズ、 参照時刻と更新時刻が含まれます。

— Function: file-modes filename

この関数はfilenameのモードビットを整数で返す。 モードビットはファイルのパーミッションとも呼ばれ、 UNIX流の参照制御を指定する。 最下位ビットが1であると、当該ファイルはすべてのユーザーが実行でき、 2番目の下位ビットが1であると、当該ファイルはすべてのユーザーが書ける といった具合である。

戻り値の最大値は4095(8進数7777)であり、これは、 だれもが読み/書き/実行でき、 所有者とグループの両者にビットsuidが設定してあり、 スティッキービットも設定されていることを意味する。

          (file-modes "~/junk/diffs")
          
               ⇒ 492               ; 10進整数
          (format "%o" 492)
          
               ⇒ "754"             ; 8進数に変換
          
          (set-file-modes "~/junk/diffs" 438)
               ⇒ nil
          
          (format "%o" 438)
          
               ⇒ "666"             ; 8進数に変換
          
          % ls -l diffs
            -rw-rw-rw-  1 lewis 0 3063 Oct 30 16:00 diffs
— Function: file-nlinks filename

この関数は、ファイルfilenameの 名前(つまりハードリンク)の個数を返す。 ファイルが存在しなければ、この関数はnilを返す。 シンボリックリンクはそれが指すファイルの名前とはみなさないので、 シンボリックリンクはこの関数には効果を持たない。

          % 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-attributes filename

この関数はファイルfilenameの属性のリストを返す。 オープンできないファイルを指定するとnilを返す。

リストの要素は順につぎのとおりである。

  1. ディレクトリはt、 シンボリックリンクは(それが指す名前の)文字列、 テキストファイルはnilである。
  2. ファイルの名前の個数。 別の名前、つまり、 ハードリンクは関数add-name-to-file(see Changing Files) を使って作成する。
  3. ファイルのuid(所有者番号)。
  4. ファイルのgid(グループ番号)。
  5. 2つの整数から成るリストとしての最終参照時刻。 最初の整数は時刻の上位16ビットであり、2番目は下位16ビット。 (これはcurrent-timeの値と同様。 Time of Dayを参照。)
  6. 2つの整数から成るリストとしての最終更新時刻(上記と同様)。
  7. 2つの整数から成るリストとしての最終状態更新時刻(上記と同様)。
  8. バイト単位でのファイルのサイズ。
  9. ls -l’と同様のファイルのモードを表す10文字の文字列。
  10. もしファイルを削除して再度作成した場合に ファイルのgid(グループ番号)が変わる場合にはt。 さもなければnil
  11. ファイルのiノード番号。 可能ならばこれは整数である。 iノード番号がEmacs Lispの整数として表現できないほど大きな場合、 値は(high . low)の形である。 ただし、lowは下位16ビットである。
  12. ファイルが置いてあるファイルシステムのファイルシステム番号。 この要素とファイルのiノード番号により、 システム上の任意の2つのファイルを区別するために十分な情報を与える。 つまり、2つのファイルが同じ値のこれらの番号を持つことはない。

たとえば、files.texiのファイル属性はつぎのようである。

          (file-attributes "files.texi")
               ⇒  (nil 1 2235 75
                    (8489 20284)
                    (8489 20284)
                    (8489 20285)
                    14906 "-rw-rw-rw-"
                    nil 129500 -32252)

この意味はつぎのとおりである。

nil
ディレクトリでもシンボリックリンクでもない。
1
唯一の名前(カレントディレクトリでfiles.texi)を持つ。
2235
uid(ユーザー番号)2235のユーザーが所有している。
75
gid(グループ番号)75のグループに属する。
(8489 20284)
最後に参照されたのは8月19日00時09分である。
(8489 20284)
最後に更新されたのは8月19日00時09分である。
(8489 20285)
最後にこのiノードを変更したのは8月19日00時09分である。
14906
長さは14906バイトである。
"-rw-rw-rw-"
モードは、所有者/グループ/その他は読み書きできる。
nil
再度作成してもgid(グループ番号)は保存される。
129500
iノード番号は129500。
-32252
ファイルシステム番号は-32252。