Manpages

名 前

file − フ ァ イ ル タ イ プ を 判 定 す る

書 式

file [ −bcikLnNprsvz ] [ −f namefile ] [ −F separator ] [ −m magicfiles ] file ...
file -C
[ −m magicfile ]

説 明

こ の man ペ ー ジ は file コ マ ン ド version 4.12 に つ い て 記 述 し て い る 。

file は 各 引 き 数 を テ ス ト し て 分 類 す る 。 フ ァ イ ル シ ス テ ム テ ス ト 、 マ ジ ッ ク ナ ン バ ー テ ス ト 、 言 語 テ ス ト の 順 序 で 3 つ の テ ス ト を 行 う 。 そ の う ち の 最 初 に 成 功 し た テ ス ト で 、 フ ァ イ ル タ イ プ を 表 示 す る 。 表 示 さ れ る タ イ プ に は 通 常 以 下 の う ち 1 つ の 単 語 が 含 ま れ る 。 text (こ の フ ァ イ ル に は 表 示 可 能 文 字 と い く つ か の 一 般 的 な 制 御 文 字 の み が 含 ま れ 、 ASCII 端 末 で 読 ん で も 多 分 安 全 で あ る )、 executable (こ の フ ァ イ ル に は プ ロ グ ラ ム を コ ン パ イ ル し た 結 果 が 含 ま れ 、 UNIX カ ー ネ ル な ど に よ り 実 行 可 能 な 形 式 で あ る )、 data そ の 他 の も の (data は 通 常 「 バ イ ナ リ 」 ま た は 表 示 不 能 な フ ァ イ ル で あ る )。 た だ し バ イ ナ リ デ ー タ を 含 ん で い る 良 く 知 ら れ た 形 式 の フ ォ ー マ ッ ト (core フ ァ イ ル 、 tar ア ー カ イ ブ な ど ) は 例 外 で あ る 。 /usr/share/file/magic フ ァ イ ル や file プ ロ グ ラ ム 自 身 を 変 更 す る 場 合 も 、 こ れ ら の キ ー ワ ー ド は 変 更 し な い こ と 。 人 々 は 、 デ ィ レ ク ト リ 内 の 読 み 取 り 可 能 な フ ァ イ ル に 対 し て は 、 全 て ’’text’’ が 表 示 さ れ る と 思 っ て い る 。 Berkeley が か つ て や っ た よ う に 、 ’’shell commands text’’ を ’’shell script’’ に 変 更 し た り し て は い け な い 。 フ ァ イ ル /usr/share/file/magic は 、 こ の プ ロ グ ラ ム の ソ ー ス デ ィ ス ト リ ビ ュ ー シ ョ ン の サ ブ デ ィ レ ク ト リ Magdir に あ る 数 多 く の 小 さ な フ ァ イ ル か ら 機 械 的 に 作 ら れ て い る 点 に 注 意 す る こ と 。 フ ァ イ ル シ ス テ ム の テ ス ト は 、 stat(2) シ ス テ ム コ ー ル の 結 果 の 検 討 に 基 づ い て 行 わ れ る 。 こ の プ ロ グ ラ ム は 、 フ ァ イ ル が 空 で あ る か や 、 特 殊 フ ァ イ ル で あ る か を チ ェ ッ ク す る 。 実 行 中 の シ ス テ ム に 特 有 の 既 存 の フ ァ イ ル タ イ プ (ソ ケ ッ ト ・ シ ン ボ リ ッ ク リ ン ク ・ 名 前 付 き パ イ プ (FIFO) (た だ し シ ス テ ム で 実 装 さ れ て い る 場 合 )) は 、 シ ス テ ム の ヘ ッ ダ フ ァ イ ル <sys/stat.h> に 定 義 さ れ て い れ ば 、 す ぐ に 分 か る 。 マ ジ ッ ク ナ ン バ ー テ ス ト は 、 特 定 の 決 ま っ た 形 式 の デ ー タ を 含 む フ ァ イ ル を チ ェ ッ ク す る の に 使 わ れ る 。 も っ と も 簡 単 な 例 は 、 バ イ ナ リ 実 行 可 能 フ ァ イ ル (コ ン パ イ ル さ れ た プ ロ グ ラ ム ) a.out で あ る 。 こ の 形 式 は 標 準 イ ン ク ル ー ド デ ィ レ ク ト リ の a.out.h で 定 義 さ れ て い る (exec.h の 場 合 も あ る )。 こ れ ら の フ ァ イ ル に は フ ァ イ ル の 先 頭 付 近 の 特 定 位 置 に 「 マ ジ ッ ク ナ ン バ ー 」 が 格 納 さ れ て い る 。 こ れ に よ り UNIX オ ペ レ ー テ ィ ン グ シ ス テ ム は 、 フ ァ イ ル が バ イ ナ リ 実 行 可 能 で あ る こ と が 分 か り 、 そ の う ち の ど の フ ァ イ ル タ イ プ で あ る か も 分 か る 。 「 マ ジ ッ ク ナ ン バ ー 」 の 考 え 方 は 、 デ ー タ フ ァ イ ル に 対 す る 拡 張 に も 応 用 さ れ て い る 。 フ ァ イ ル の 先 頭 か ら 近 い 場 所 に 一 定 の 識 別 子 を 持 つ フ ァ イ ル は 、 通 常 は こ の 方 法 で 記 述 で き る 。 こ れ ら の フ ァ イ ル に つ い て の 情 報 識 別 子 は 、 コ ン パ イ ル さ れ た マ ジ ッ ク フ ァ イ ル /usr/share/file/magic.mgc か ら 読 み 込 ま れ る 。 こ の コ ン パ イ ル さ れ た フ ァ イ ル が な い 場 合 は 、 /usr/share/file/magic か ら 読 み 込 ま れ る 。 更 に file$HOME/.magic.mgc ま た は $HOME/.magic か ら マ ジ ッ ク フ ァ イ ル の エ ン ト リ を 探 す 。 フ ァ イ ル が マ ジ ッ ク フ ァ イ ル の ど の エ ン ト リ と も マ ッ チ し な か っ た 場 合 、 テ キ ス ト フ ァ イ ル で あ る か を 調 べ る 。 文 字 集 合 内 の 表 示 可 能 な テ キ ス ト を 構 成 す る バ イ ト 列 の 範 囲 の 違 い を 調 べ る こ と に よ り 、 ASCII, ISO-8859-x, (Macintosh や IBM PC シ ス テ ム で 使 用 さ れ て い る ) ISO に 準 拠 し な い 8 ビ ッ ト 拡 張 ASCII 文 字 集 合 、 UTF-8 エ ン コ ー ド さ れ た ユ ニ コ ー ド 、 UTF-16 エ ン コ ー ド さ れ た ユ ニ コ ー ド 、 EBCDIC 文 字 集 合 を 識 別 す る 。 フ ァ イ ル が こ れ ら の テ ス ト を パ ス す る と 、 文 字 集 合 名 が 表 示 さ れ る 。 ASCII, ISO-8859-x, UTF-8, 拡 張 ASCII の フ ァ イ ル は 、 こ れ は ほ ぼ 全 て の 端 末 で 読 む こ と が で き る の で 、 ’’text’’ と し て 識 別 さ れ る 。 UTF-16 と EBCDIC の フ ァ イ ル は 、 た と え テ キ ス ト を 含 ん で い た と し て も 読 む 前 に 変 換 が 必 要 な の で 、 単 な る ’’character data’’ と さ れ る 。 さ ら に file は テ キ ス ト 型 フ ァ イ ル の 他 の 特 徴 も 決 定 し よ う と す る 。 フ ァ イ ル の 行 が Unix で 標 準 的 な LF で は な く 、 CR, CRLF, NEL で 終 了 し て い る 場 合 は 、 そ の 旨 を 表 示 す る 。 フ ァ イ ル に 組 み 込 み (embedded) エ ス ケ ー プ シ ー ケ ン ス や 重 ね 打 ち (overstriking) が 含 ま れ て い る 場 合 も 、 そ の 旨 を 表 示 す る 。

file は テ キ ス ト 型 フ ァ イ ル で 使 わ れ て い る 文 字 集 合 を 決 定 し た 後 は 、 フ ァ イ ル が 書 か れ て い る 言 語 を 決 定 し よ う と す る 。 言 語 テ ス ト で は フ ァ イ ル の 最 初 の 数 ブ ロ ッ ク の ど こ か に 現 れ る 特 定 の 文 字 列 (names.h を 参 照 ) を 探 す 。 例 え ば キ ー ワ ー ド .br が あ れ ば 、 そ の フ ァ イ ル は 多 く の 場 合 troff(1) の 入 力 フ ァ イ ル で あ る こ と を 示 し て お り 、 キ ー ワ ー ド struct は C 言 語 プ ロ グ ラ ム で あ る こ と を 示 し て い る 。 こ れ ら の テ ス ト は 前 の テ ス ト に 比 べ る と 信 頼 性 が 低 い の で 、 最 後 に 実 行 さ れ る 。 言 語 テ ス ト の ル ー チ ン は 他 の フ ァ イ ル タ イ プ (例 え ば tar(1) ア ー カ イ ブ ) に 関 す る テ ス ト も 行 う 。 上 に 挙 げ た 文 字 集 合 の ど れ に も 当 て は ま ら な い フ ァ イ ル は 、 単 に ’’data’’ と 表 示 さ れ る 。

オ プ シ ョ ン

−b, −−brief 出 力 行 の 最 初 に フ ァ イ ル 名 を 表 示 し な い (簡 易 モ ー ド )。
−c, −−checking−printout
マ ジ ッ ク フ ァ イ ル の 解 析 形 式 を 表 示 し て チ ェ ッ ク す る 。 通 常 は −m オ プ シ ョ ン と 一 緒 に 用 い て 、 新 し い マ ジ ッ ク フ ァ イ ル を イ ン ス ト ー ル す る 前 の デ バ ッ グ に 使 う 。
−C, −−compile
マ ジ ッ ク フ ァ イ ル を 事 前 に 解 析 し た 内 容 を 含 む 出 力 フ ァ イ ル magic.mgc を 書 き 出 す 。
−f, −−files−from
namefile 他 の 引 き 数 リ ス ト よ り 先 に 、 検 査 す る フ ァ イ ル の 名 前 を namefile フ ァ イ ル か ら 読 み 込 む (1 行 に 1 つ の フ ァ イ ル 名 )。 namefile ま た は 少 な く と も 1 つ の フ ァ イ ル 名 引 き 数 が な け れ ば い け な い 。 標 準 入 力 を テ ス ト す る 場 合 は 、 フ ァ イ ル 名 引 き 数 と し て ’’−’’ を 使 う こ と 。
−F, −−separator
separator 指 定 し た 文 字 列 を フ ァ イ ル 名 と フ ァ イ ル を テ ス ト し た 結 果 の 区 切 り 文 字 と す る 。 デ フ ォ ル ト は ’’:’’ で あ る 。
−i, −−mime

file コ マ ン ド の 出 力 を 人 間 が 読 み や す い 昔 な が ら の も の で は な く 、 mime タ イ プ 文 字 列 に す る 。 し た が っ て ’’ASCII text’’ で は な く 、 ’’text/plain; charset=us-ascii’’ の よ う に 出 力 さ れ る 。 こ の オ プ シ ョ ン を 動 作 さ せ る た め 、 file コ マ ン ド が 認 識 す る フ ァ イ ル の 取 り 扱 い 方 法 (多 く の テ キ ス ト フ ァ イ ル タ イ プ や デ ィ レ ク ト リ ) を 変 更 し 、 別 の ’’magic’’ フ ァ イ ル を 使 う よ う に し た 。 (下 記 の 「 フ ァ イ ル 」 の セ ク シ ョ ン を 参 照 )。

−k, −−keep−going 最 初 に マ ッ チ し た も の で 停 止 せ ず 、 次 の マ ッ チ ン グ に 進 む 。
−L, −−dereference

(シ ス テ ム が シ ン ボ リ ッ ク リ ン ク を サ ポ ー ト し て い る 場 合 は ) ls(1) の 同 じ 名 前 の オ プ シ ョ ン と 同 様 に 、 シ ン ボ リ ッ ク リ ン ク を 辿 る よ う に さ せ る 。

−m, −−magic−file list マ ジ ッ ク ナ ン バ ー が 書 か れ た 別 の フ ァ イ ル の リ ス ト を 指 定 す る 。 1 つ の フ ァ イ ル で も 、 コ ン マ で 区 切 ら れ た フ ァ イ ル の リ ス ト で も よ い 。 コ ン パ イ ル 済 み の マ ジ ッ ク フ ァ イ ル が 一 緒 に 指 定 さ れ た 場 合 は 、 代 り に そ れ を 使 う 。
−n, −−no−buffer

1 つ の フ ァ イ ル を チ ェ ッ ク す る 毎 に 、 標 準 出 力 を フ ラ ッ シ ュ す る 。 こ れ は 複 数 の フ ァ イ ル を チ ェ ッ ク す る と き に の み 役 立 つ 。 こ の オ プ シ ョ ン は 、 フ ァ イ ル タ イ プ を パ イ プ か ら 出 力 す る プ ロ グ ラ ム で 使 わ れ る こ と を 意 図 し て い る 。 −i ま た は −−mime オ プ シ ョ ン と 一 緒 に 指 定 す る と 、 こ の プ ロ グ ラ ム は 各 フ ァ イ ル 名 の 後 に ".mime" を 追 加 す る 。

−N, −−no−pad 出 力 を 整 列 す る た め の フ ァ イ ル 名 へ の 空 白 の 追 加 を 行 わ な い 。
−p, −−preserve−date

utime(2) ま た は utimes(2) を サ ポ ー ト す る シ ス テ ム で は 、 file(1) が 解 析 し た フ ァ イ ル を 読 み 込 ま れ な か っ た か の よ う に す る た め 、 ア ク セ ス 時 刻 を 保 存 し よ う と す る 。

−r, −−raw 印 字 不 能 文 字 を \ooo に 変 換 し な い 。 通 常 、 file は 印 字 不 能 文 字 を 8 進 数 表 現 に 変 換 す る 。
−s, −−special−files
通 常 file は 、 引 き 数 で 指 定 さ れ た フ ァ イ ル の う ち stat(2) で 通 常 の フ ァ イ ル (ordinary file) と さ れ た フ ァ イ ル の み を 読 み 込 ん で 、 タ イ プ の 決 定 を 行 う 。 特 殊 フ ァ イ ル を 読 み 込 む と 異 常 な 結 果 を 引 き 起 こ す か も 知 れ な い た め 、 こ の 動 作 に よ り 問 題 を 防 止 し て い る 。 −s オ プ シ ョ ン を 指 定 す る と 、 file は 引 き 数 で 指 定 さ れ た ブ ロ ッ ク ス ペ シ ャ ル フ ァ イ ル や キ ャ ラ ク タ ス ペ シ ャ ル フ ァ イ ル も 読 み 込 む 。 ブ ロ ッ ク ス ペ シ ャ ル フ ァ イ ル で あ る raw デ ィ ス ク パ ー テ ィ シ ョ ン の デ ー タ の フ ァ イ ル シ ス テ ム タ イ プ を 決 定 す る の に 役 立 つ 。 こ の オ プ シ ョ ン を 指 定 す る と filestat(2) が 返 す フ ァ イ ル サ イ ズ を 無 視 す る 。 こ れ は raw デ ィ ス ク パ ー テ ィ シ ョ ン の サ イ ズ を 0 と し て 返 す シ ス テ ム も 存 在 す る た め で あ る 。
−v, −−version
プ ロ グ ラ ム の バ ー ジ ョ ン を 表 示 し て 終 了 す る 。
−z, −−uncompress
圧 縮 フ ァ イ ル の 中 も 検 査 す る 。

−−help ヘ ル プ メ ッ セ ー ジ を 表 示 し て 終 了 す る 。

フ ァ イ ル

/usr/share/file/magic.mgc デ フ ォ ル ト の コ ン パ イ ル 済 み の マ ジ ッ ク ナ ン バ ー の リ ス ト 。
/usr/share/file/magic
デ フ ォ ル ト の マ ジ ッ ク ナ ン バ ー の リ ス ト 。
/usr/share/file/magic.mime.mgc
デ フ ォ ル ト の コ ン パ イ ル 済 み の マ ジ ッ ク ナ ン バ ー の リ ス ト 。 −i オ プ シ ョ ン が 指 定 さ れ た 場 合 に 、 mime タ イ プ を 出 力 す る の に 使 用 さ れ る 。
/usr/share/file/magic.mime
デ フ ォ ル ト の マ ジ ッ ク ナ ン バ ー の リ ス ト 。 −i オ プ シ ョ ン が 指 定 さ れ た 場 合 に 、 mime タ イ プ を 出 力 す る の に 使 用 さ れ る 。
/etc/magic
マ ジ ッ ク ナ ン バ ー に つ い て の ロ ー カ ル な 追 加 情 報 。

環 境 変 数

環 境 変 数 MAGIC は デ フ ォ ル ト の マ ジ ッ ク ナ ン バ ー フ ァ イ ル の 名 前 を 設 定 す る 。 file は こ の 変 数 の 値 に ".mime" と ".mgc" を 適 宜 追 加 す る (ど ち ら か 一 方 の 場 合 も あ る )。 こ の 変 数 が 設 定 さ れ る と 、 file$HOME/.magic を オ ー プ ン し な い 。

関 連 項 目

magic(4) − マ ジ ッ ク フ ァ イ ル の フ ォ ー マ ッ ト に つ い て の 記 述 。
strings(1), od(1), hexdump(1) − 非 テ キ ス ト フ ァ イ ル を 検 査 す る た め の ツ ー ル 。

標 準 へ の 準 拠

こ の プ ロ グ ラ ム は System V Interface Definition の FILE(CMD) よ り 優 れ て い る と 考 え て い る 。 フ ァ イ ル に 含 ま れ て い る 曖 昧 な 言 語 か ら 決 定 す る と い う 点 で は 似 て い る 。 動 作 は 同 じ 名 前 の System V の プ ロ グ ラ ム と ほ ぼ 互 換 性 が あ る 。 こ の バ ー ジ ョ ン は よ り 多 く の マ ジ ッ ク ナ ン バ ー を 認 識 す る 。 し か し 多 く の 場 合 、 System V の も の と は 異 な っ た (た だ し も っ と 正 確 な ) 出 力 を 行 う 。

System V バ ー ジ ョ ン と の 重 要 な 違 い は 、 こ の バ ー ジ ョ ン で は 空 白 を 区 切 り 文 字 と し て 扱 う た め に 、 パ タ ー ン 文 字 列 に お け る 空 白 文 字 を し な け れ ば な ら な い と い う 点 に あ る 。 例 え ば 、 >10 string language impress  (imPRESS data) と い う 既 存 の マ ジ ッ ク フ ァ イ ル は 、 >10 string language\ impress (imPRESS data) の よ う に 変 更 し な け れ ば な ら な い 。 更 に こ の バ ー ジ ョ ン で は 、 バ ッ ク ス ラ ッ シ ュ を 含 む パ タ ー ン 文 字 列 は エ ス ケ ー プ し な け れ ば な ら な い 。 例 え ば 、
0 string \begindata Andrew Toolkit document と い う 既 存 の マ ジ ッ ク フ ァ イ ル は 、
0 string \\begindata Andrew Toolkit document の よ う に 変 更 し な け れ ば な ら な い 。

Sun Microsystems の SunOS releases 3.2 以 降 に は 、 System V の も の か ら 派 生 し た file(1) コ マ ン ド が 含 ま れ て い る が 、 い く つ か 拡 張 さ れ て い る 。 私 の 作 っ た バ ー ジ ョ ン は 、 Sun の も の と 些 細 な 違 い し か な い 。 Sun の バ ー ジ ョ ン は ’&’ オ ペ レ ー タ の 拡 張 が 含 ま れ 、 例 え ば 以 下 の よ う に 使 わ れ る 。 >16 long&0x7fffffff >0 not stripped

マ ジ ッ ク デ ィ レ ク ト リ

マ ジ ッ ク フ ァ イ ル の エ ン ト リ は 、 い ろ い ろ な 情 報 源 、 主 に USENET か ら 集 め ら れ 、 多 く の 著 者 か ら 寄 贈 し て も ら っ た 。 Christos Zoulas (ア ド レ ス は 以 下 ) は マ ジ ッ ク フ ァ イ ル エ ン ト リ を 集 め た り 修 正 し た り し て く れ た 。 マ ジ ッ ク フ ァ イ ル の エ ン ト リ を 整 理 統 合 し た も の は 、 定 期 的 に 配 布 さ れ る 予 定 で あ る 。 マ ジ ッ ク フ ァ イ ル の エ ン ト リ は 順 番 が 重 要 で あ る 。 使 用 し て い る シ ス テ ム に よ っ て は 、 順 番 の 組 み が 不 正 で あ る か も し れ な い 。 古 い file コ マ ン ド が マ ジ ッ ク フ ァ イ ル を 使 っ て い る 場 合 、 比 較 の た め に 古 い マ ジ ッ ク フ ァ イ ル を 残 し て お く こ と (/usr/share/file/magic.orig に 名 前 を 変 更 し て お く )。

$ file file.c file /dev/{wd0a,hda}
file.c: C program text
file: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),
dynamically linked (uses shared libs), stripped
/dev/wd0a: block special (0/0)
/dev/hda: block special (3/0)

$ file -s /dev/wd0{b,d}
/dev/wd0b: data
/dev/wd0d: x86 boot sector

$ file -s /dev/hda{,1,2,3,4,5,6,7,8,9,10}
/dev/hda: x86 boot sector
/dev/hda1: Linux/i386 ext2 filesystem
/dev/hda2: x86 boot sector
/dev/hda3: x86 boot sector, extended partition table
/dev/hda4: Linux/i386 ext2 filesystem
/dev/hda5: Linux/i386 swap file
/dev/hda6: Linux/i386 swap file
/dev/hda7: Linux/i386 swap file
/dev/hda8: Linux/i386 swap file
/dev/hda9: empty
/dev/hda10: empty

$ file -i file.c file /dev/{wd0a,hda}
file.c: text/x-c
file: application/x-executable, dynamically linked (uses shared libs),
not stripped
/dev/hda: application/x-not-regular-file
/dev/wd0a: application/x-not-regular-file

履 歴

少 な く と も Research Version 4 以 降 の 全 て の UNIX に 、 file コ マ ン ド は 含 ま れ て い る (man ペ ー ジ の 日 付 は 1973 年 11 月 で あ る )。 System V バ ー ジ ョ ン で は 重 大 な 変 更 が 行 わ れ 、 マ ジ ッ ク ナ ン バ ー タ イ プ の リ ス ト を 外 部 に 保 持 す る よ う に な っ た 。 こ の 変 更 は プ ロ グ ラ ム を 幾 ら か は 遅 く し た が 、 と て も 柔 軟 に し た 。

System V バ ー ジ ョ ン を ベ ー ス に し た こ の プ ロ グ ラ ム は 、 誰 の ソ ー ス コ ー ド も 見 ず に Ian Darwin <ian [AT] darwinsys.com> に よ っ て 書 か れ た 。

John Gilmore は コ ー ド を 広 範 囲 に わ た っ て 改 訂 し 、 最 初 の バ ー ジ ョ ン よ り 改 良 し た 。 Geoff Collyer は い く つ か の 欠 点 を 見 つ け 、 マ ジ ッ ク フ ァ イ ル エ ン ト リ を 提 供 し た 。 ’&’ オ ペ レ ー タ に つ い て は 1989 年 に Rob McMahon, cudcv [AT] warwick.uk が 貢 献 し た 。

Guy Harris, guy [AT] netapp.com は 1993 年 か ら 現 在 に 至 る ま で 多 く の 変 更 を 行 っ て い る 。

Christos Zoulas (christos [AT] astron.com) は 1990 年 に 最 初 の 開 発 を 行 い 、 現 在 ま で メ ン テ ナ ン ス を 行 っ て い る 。

2000 年 の Chris Lowth, chris [AT] lowth.com に よ る 変 更 : 別 の マ ジ ッ ク フ ァ イ ル と 内 部 ロ ジ ッ ク を 使 い 、 ’’-i’’ で mime タ イ プ 文 字 列 を 出 力 す る よ う に し た 。

2000 年 7 月 の Eric Fischer (enf [AT] pobox.com) に よ る 変 更 : 文 字 コ ー ド を 識 別 し 、 非 ASCII フ ァ イ ル の 言 語 を 識 別 す る よ う に し た 。

"Magdir" デ ィ レ ク ト リ (/etc/magic フ ァ イ ル の ソ ー ス ) の 貢 献 者 の リ ス ト は 、 長 す ぎ る の で こ こ に は 含 め ら れ な い 。 貢 献 し て く れ た 人 は 自 分 が 貢 献 し た こ と を 知 っ て い る で し ょ う 。 感 謝 し ま す 。

法 的 な 注 意

Copyright (c) Ian F. Darwin, Toronto, Canada, 1986-1999. こ の ソ フ ト ウ ェ ア は standard Berkeley Software Distribution copyright に よ り 保 護 さ れ て い る 。 ソ ー ス 配 布 に あ る LEGAL.NOTICE フ ァ イ ル を 参 照 す る こ と 。 フ ァ イ ル tar.his_tar.c は John Gilmore に よ っ て 書 か れ た も の で 、 彼 の パ ブ リ ッ ク ド メ イ ン tar プ ロ グ ラ ム に 由 来 す る 。 こ の 2 つ の フ ァ イ ル に は 上 記 の ラ イ セ ン ス が 適 用 さ れ な い 。

バ グ

magdir に あ る 全 て の フ ァ イ ル か ら Magic フ ァ イ ル を 自 動 的 に 構 築 す る も っ と 良 い 方 法 が あ る べ き だ 。 そ れ は ど ん な も の だ ろ う か ? 起 動 を 速 く す る た め に は 、 マ ジ ッ ク フ ァ イ ル を バ イ ナ リ に コ ン パ イ ル し て お く べ き だ ろ う (つ ま り ndbm(3) や 、 異 な る OS に よ る ネ ッ ト ワ ー ク 環 境 で 使 う た め に 固 定 長 の ASCII 文 字 列 に す る の も 良 い だ ろ う )。 こ れ に よ り 、 System V バ ー ジ ョ ン の 柔 軟 性 を 備 え た ま ま 、 同 じ 名 前 の Version 7 の プ ロ グ ラ ム よ り 速 く な る だ ろ う 。

file に は 正 確 さ よ り も 速 度 を 重 視 し た ア ル ゴ リ ズ ム が 使 わ れ て い る た め 、 テ キ ス ト フ ァ イ ル の 内 容 を 読 み 誤 る こ と が あ る 。

(主 に プ ロ グ ラ ミ ン グ 言 語 を 対 象 と し た ) テ キ ス ト フ ァ イ ル の サ ポ ー ト は 、 単 純 化 さ れ て い て 不 十 分 で あ り 、 更 新 す る に は 再 コ ン パ イ ル が 必 要 で あ る 。 後 続 の 行 を 追 っ て い く た め に は 、 ’’else’’ 節 を 付 け て お く べ き で あ る 。 マ ジ ッ ク フ ァ イ ル と キ ー ワ ー ド で 正 規 表 現 を サ ポ ー ト す べ き で あ る 。 ASCII TAB を フ ィ ー ル ド の 区 切 り 文 字 と し て 使 用 す る の は 、 見 苦 し く 編 集 し づ ら い が 、 定 着 し て い る 。 例 え ば troff(1) コ マ ン ド に 対 す る man ペ ー ジ の マ ク ロ の よ う に 、 キ ー ワ ー ド で 大 文 字 を 許 可 す る よ う に す る の が 望 ま し い だ ろ う 。 正 規 表 現 が サ ポ ー ト さ れ れ ば 、 こ れ が 簡 単 に で き る だ ろ う 。 こ の プ ロ グ ラ ム は FORTRAN を 判 別 で き な い 。 開 始 行 で イ ン デ ン ト さ れ て い る キ ー ワ ー ド を 見 て 、 FORTRAN で あ る と 判 断 す べ き で あ る 。 正 規 表 現 が サ ポ ー ト さ れ れ ば 、 こ れ が 簡 単 に で き る だ ろ う 。

ascmagic に あ る キ ー ワ ー ド は 、 多 分 Magic フ ァ イ ル に 入 れ る べ き だ ろ う 。 こ れ は オ フ セ ッ ト 値 に ’*’ の よ う な キ ー ワ ー ド を 使 う こ と で 可 能 だ ろ う 。 そ の 他 の 最 適 化 と し て は マ ジ ッ ク フ ァ イ ル の ソ ー ト が あ る 。 こ れ に よ り 一 度 読 み 込 ん で し ま え ば 、 最 初 の バ イ ト ・ 最 初 の ワ ー ド ・ 最 初 の long 型 、 ... と い う よ う に 全 て の テ ス ト で 突 き 止 め て い く こ と が で き る 。 マ ジ ッ ク フ ァ イ ル エ ン ト リ の 衝 突 に つ い て 苦 情 を 言 っ て く だ さ い 。 マ ジ ッ ク フ ァ イ ル の エ ン ト リ の ソ ー ト は 、 マ ジ ッ ク フ ァ イ ル に お け る 位 置 で は な く フ ァ イ ル オ フ セ ッ ト で 行 う 、 と い う ル ー ル に す る べ き だ ろ う か ? 推 定 し た 結 果 が 「 ど の く ら い 良 い か 」 を 評 価 す る 手 段 を 、 プ ロ グ ラ ム が 提 供 す べ き で あ る 。 最 終 的 に は (例 え ば ’’Newsgroups:’’ に 対 す る ’’Return-Path:’’ の よ う に ) 他 の 推 定 結 果 よ り 良 く な い 推 定 結 果 (例 え ば 、 フ ァ イ ル の 最 初 の 5 文 字 が ’’From ’’ な ど ) は 削 除 す る 。 し か し 他 の 推 定 結 果 が 出 な け れ ば 、 最 初 の 推 定 結 果 を 使 え る よ う に し て お く べ き で あ る 。 こ の プ ロ グ ラ ム は 、 い く つ か の ベ ン ダ の file コ マ ン ド よ り 遅 い 。 複 数 文 字 コ ー ド を 新 し く サ ポ ー ト し た こ と で 、 い っ そ う 遅 く な っ て し ま っ た 。 こ の man ペ ー ジ 、 特 に こ の セ ク シ ョ ン が 長 す ぎ る 。

入 手 方 法

オ リ ジ ナ ル の 作 者 の 最 新 バ ー ジ ョ ン は 、 anonymous FTP で ftp.astron.com の デ ィ レ ク ト リ /pub/file/file-X.YZ.tar.gz か ら 入 手 で き る 。