Next: 拡張されたファイル属性, Previous: 本当の名前, Up: ファイルの情報 [Contents][Index]
このセクションではファイルの詳細な情報を取得する関数について説明します。それらの情報にはファイルの所有者やグループの番号、ファイル名の個数、inode番号、サイズやアクセス日時、変更日時が含まれます。
この関数はファイルfilename1がファイルfilename2より新しければtをリターンする。filename1が存在しなければnil、filename1は存在するがfilename2が存在しなければ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
この関数は最後に呼び出されて以降にfilenameのタイムスタンプが変更されていれば非nilをリターンする。何らかのfilenameにたいして初めて呼び出された際には、そのファイルの最終修整時刻とサイズを記録して、filenameが存在すれば非nilをリターンする。これ以降に同じfilenameで呼び出されると、カレントのタイムスタンプとサイズを記録されたものと比較してタイムスタンプかサイズのいずれか(あるいは両方)が異なる場合のみ非nilをリターンする。これはあるファイルが変更されたら常に再読み込みするようなLispプログラムで役に立つ。オプション引数tag
(シンボル)を指定して呼び出すと、サイズと最終修整時刻の比較は同一tagにたいする呼び出しに限定される。
この関数はファイルfilenameの属性(attributes)のリストをリターンする。オープンできないファイルが指定された場合は、nilをリターンする。指定されたファイルが存在しなければnilをリターンする。この関数はシンボリックリンクをフォローしない。オプション引数id-formatは属性UIDとGID(以下参照)にたいして望ましいフォーマットを指定する。有効な値は'stringと'integer。デフォルトは'integerだが、わたしたちはこれの変更を計画しているので、リターンされるUIDやGIDを使用する場合にはid-formatにたいして非nil値を指定すること。
GNUプラットフォームではこの関数はロックファイル処理時はアトミックである。別のプロセスによりファイルシステムが同時に変更された場合には、この関数は変更の前か後のいずれかのファイル属性をリターンする。それ以外ならこの関数はアトミックではなく競合状態を検知したらnil、または以前とカレントが混ざったファイル属性をリターンするかもしれない。
このリスト内の要素にアクセスするためにアクセッサ関数が提供される。このアクセッサ以下の要素の記述とともに示される。
リストの要素は順に:
t、シンボリックリンクにたいしては文字列(リンクされる名前)、テキストファイル(file-attribute-type)にたいしてはnil。
file-attribute-link-number)。ハードリンクとして知られる代替え名は関数add-name-to-fileを使用して作成できる(ファイルの名前と属性の変更を参照)。
file-attribute-user-id。しかし名前をもつユーザーに対応しなければ値は整数。
file-attribute-group-id)。
file-attribute-access-time)。タイムスタンプはcurrent-time
(時刻を参照)の形式であり、ファイルシステムのタイムスタンプの精度に切り詰められる。たとえばFATベースのいくつかのファイルシステムでは最終アクセスの日付だけが記録されるので、この時刻には常に最終アクセス日の真夜中が保持されることに注意。
file-attribute-modification-time)。これはファイルのコンテンツが変更された最終時刻。
file-attribute-status-change-time。上記参照)。これはファイルのアクセスモードビット、所有者とグループ、およびファイルにたいしてファイルのコンテンツ以外にファイルシステムが記録するその他の情報にたいする最終変更時刻。
file-attribute-size)。
file-attribute-modes)。
file-attribute-inode-number)。
file-attribute-device-number)を表す整数、あるいは2つの整数からなるコンスセル。後者のコンスセルはリモートとローカルのファイルシステムを区別するために、リモートファイルにたいして使われる場合がある。
ファイルのinodeとデバイスを合わせれば、そのシステム上の2つの任意のファイルを区別するために十分な情報が得られる(この2つの属性の両方に等しい値を2つのファイルがもつことはできない)。ファイルを一意に識別するこのタプル(tuple:
組)は、file-attribute-file-identifierによってリターンされる。
たとえば以下はfiles-ja.texiのファイル属性:
(file-attributes "files-ja.texi" 'string)
⇒ (nil 1 "lh" "users"
(20614 64019 50040 152000)
(20000 23 0 0)
(20614 64555 902289 872000)
122295 "-rw-rw-rw-"
t 6473924464520138
1014478468)
この結果を解釈すると:
nilディレクトリーでもシンボリックリンクでもない。
1(カレントデフォルトディレクトリー内で名前files-ja.texiは)単一の名前をもつ。
"lh"名前"lh"のユーザーにより所有される。
"users"名前"users"のグループ。
(20614 64019 50040 152000)最終アクセス時刻は2012年10月23日のUTC(協定世界時)で20:12:03.050040152(current-time-listがnilならタイムスタンプは(1351023123050040152
. 1000000000)になる)。
(20000 23 0 0)最終修整時刻は2001年7月15日のUTCで08:53:43.000000000(current-time-listがnilならタイムスタンプは(1310720023000000000
. 1000000000)になる)。
(20614 64555 902289 872000)最後のステータス変更時刻は2012年10月23日のUTCで20:20:59.902289872(current-time-listがnilならタイムスタンプは(1351023659902289872
. 1000000000)になる)。
122295バイト長は122295バイト(しかしマルチバイトシーケンスが含まれていたり、EOLフォーマットがCRLFなら122295文字は含まれないかもしれない)。
"-rw-rw-rw-"所有者、グループ、その他にたいして読み取り、書き込みアクセスのモードをもつ。
t単なるプレースホルダーであり何の情報ももたない。
6473924464520138inode番号は6473924464520138。
1014478468ファイルシステムのデバイス番号は1014478468。
この関数はファイルfilenameがもつ名前(ハードリンク)の個数をリターンする。ファイルが存在しなければ、この関数はnilをリターンする。シンボリックリンクはリンク先のファイルの名前とは判断されないので、この関数に影響しないことに注意。この関数はシンボリックリンクをフォローしない。
$ ls -l foo* -rw-rw-rw- 2 rms rms 4 Aug 19 01:27 foo -rw-rw-rw- 2 rms rms 4 Aug 19 01:27 foo1
(file-nlinks "foo")
⇒ 2
(file-nlinks "doesnt-exist")
⇒ nil
Next: 拡張されたファイル属性, Previous: 本当の名前, Up: ファイルの情報 [Contents][Index]