Manpages

名 前

magic − file コ マ ン ド 用 の マ ジ ッ ク ナ ン バ ー フ ァ イ ル

説 明

こ の マ ニ ュ ア ル ペ ー ジ で は 、 file(1) コ マ ン ド (バ ー ジ ョ ン 4.12) が 使 用 す る magic フ ァ イ ル の 書 式 を 説 明 す る 。 フ ァ イ ル の 種 類 を 調 べ る 方 法 は 色 々 あ る が 、 file コ マ ン ド は フ ァ イ ル が 特 定 の 「 マ ジ ッ ク ナ ン バ ー (magic number)」 で 始 ま る か ど う か に よ っ て フ ァ イ ル の 種 類 を 識 別 す る 。 フ ァ イ ル /usr/share/file/magic で 指 定 す る こ と は 、 調 べ る べ き マ ジ ッ ク ナ ン バ ー 、 特 定 の マ ジ ッ ク ナ ン バ ー が 見 つ か っ た 時 に 表 示 す る メ ッ セ ー ジ 、 フ ァ イ ル か ら 取 り 出 せ る そ の 他 の 情 報 で あ る 。

magic フ ァ イ ル の 各 行 で は 実 行 す る テ ス ト を 指 定 す る 。 テ ス ト で は 、 フ ァ イ ル 先 頭 か ら 見 て 特 定 の オ フ セ ッ ト 位 置 に あ る デ ー タ と 、 1 バ イ ト ま た は 2 バ イ ト 、 4 バ イ ト の 数 値 や 文 字 列 と の 比 較 が 行 わ れ る 。 テ ス ト が 成 功 す る と 指 定 し た メ ッ セ ー ジ が 出 力 さ れ る 。 行 に は 以 下 の 項 目 が 含 ま れ る :

offset 調 べ る デ ー タ の フ ァ イ ル 内 で の 位 置 を 指 定 す る オ フ セ ッ ト 値 で 、 単 位 は バ イ ト で あ る 。

type 調 べ る デ ー タ の 型 。 指 定 で き る 値 は 以 下 の 通 り で あ る :

byte

1 バ イ ト 値 。

short

(ほ と ん ど の シ ス テ ム で は ) 2 バ イ ト 値 。 マ シ ン の ネ イ テ ィ ブ の バ イ ト 順 で あ る 。

long

(ほ と ん ど の シ ス テ ム で は ) 4 バ イ ト 値 。 マ シ ン の ネ イ テ ィ ブ の バ イ ト 順 で あ る 。

string

文 字 列 を 表 す バ イ ト 列 。 string 型 の 指 定 で は 、 オ プ シ ョ ン と し て /[Bbc]* を 後 ろ に 続 け る こ と が で き る 。 ’’B’’ フ ラ グ は 、 対 象 フ ァ イ ル 中 の 複 数 個 の 空 白 を 1 個 の 空 白 に 切 り 詰 め て 扱 う 。 こ の 場 合 、 対 象 フ ァ イ ル は 少 な く と も 1 個 の 空 白 を 含 ん で い る 必 要 が あ る 。 magic フ ァ イ ル に n 個 の 連 続 し た 空 白 が あ る 場 合 、 対 象 フ ァ イ ル に は 、 こ れ に マ ッ チ す る n 個 の 連 続 し た 空 白 が 必 要 と な る 。 ’’b’’フ ラ グ は 、 対 象 フ ァ イ ル 中 の 空 白 を 存 在 し て も し な く て も よ い 空 白 と し て 扱 う 。 さ ら に 、 ’’c’’ フ ラ グ は 、 大 文 字 ・ 小 文 字 を 区 別 し な い マ ッ チ を 行 う こ と を 指 定 す る : magic フ ァ イ ル 中 の 小 文 字 は 、 対 象 フ ァ イ ル 中 の 大 文 字 ・ 小 文 字 の 両 方 に マ ッ チ す る 。 し か し 、 magic フ ァ イ ル 中 の 大 文 字 は 、 対 象 フ ァ イ ル 中 の 大 文 字 に の み マ ッ チ す る 。
date

UNIX 時 刻 と 解 釈 さ れ る 4 バ イ ト 値 。

ldate

UNIX 形 式 の 時 刻 と 解 釈 さ れ る 4 バ イ ト 値 。 た だ し UTC で は な く ロ ー カ ル タ イ ム と し て 解 釈 さ れ る 。

beshort

(ほ と ん ど の シ ス テ ム で は ) 2 バ イ ト 値 。 バ イ ト 順 は ビ ッ グ エ ン デ ィ ア ン で あ る 。

belong

(ほ と ん ど の シ ス テ ム で は ) 4 バ イ ト 値 。 バ イ ト 順 は ビ ッ グ エ ン デ ィ ア ン で あ る 。

bedate

(ほ と ん ど の シ ス テ ム で は ) 4 バ イ ト 値 。 バ イ ト 順 は ビ ッ グ エ ン デ ィ ア ン で あ る 。 UNIX 時 刻 と 解 釈 さ れ る 。

leshort

(ほ と ん ど の シ ス テ ム で は ) 2 バ イ ト 値 。 バ イ ト 順 は リ ト ル エ ン デ ィ ア ン で あ る 。

lelong

(ほ と ん ど の シ ス テ ム で は ) 4 バ イ ト 値 。 バ イ ト 順 は リ ト ル エ ン デ ィ ア ン で あ る 。

ledate

(ほ と ん ど の シ ス テ ム で は ) 4 バ イ ト 値 。 バ イ ト 順 は リ ト ル エ ン デ ィ ア ン で あ る 。 UNIX 時 刻 と 解 釈 さ れ る 。

leldate

(ほ と ん ど の シ ス テ ム で は ) 4 バ イ ト 値 。 バ イ ト 順 は リ ト ル エ ン デ ィ ア ン で あ る 。 UNIX 形 式 の 時 刻 と 解 釈 さ れ る 。 た だ し UTC で は な く ロ ー カ ル タ イ ム と し て 解 釈 さ れ る 。

数 値 型 の 値 の 後 に は & と 数 値 を 書 く こ と が で き る 。 こ の 場 合 、 比 較 を 行 う 前 に & の 後 に 置 い た 数 値 と の AND 演 算 が 行 わ れ る 。 型 の 前 に u を 置 く こ と で 、 順 序 付 き の 比 較 を 符 号 無 し で 行 う こ と が 指 定 で き る 。

test フ ァ イ ル 内 の 値 と 比 較 す る 値 。 こ れ は

C 言 語 の 文 字 列 と し て 指 定

し 、 エ ス ケ ー プ 文 字 も 普 通 に 使 え る (例 : \n は 改 行 文 字 )。 数 値 の 前 に は 、 実 行 す る 動 作 を 指 定 す る 文 字 を 置 く こ と が で き る 。 = を 指 定 し た 場 合 は 、 フ ァ イ ル 内 の 値 は 指 定 し た 値 と 等 し く な け れ ば な ら な い 。 < を 指 定 し た 場 合 は 、 フ ァ イ ル 内 の 値 は 指 定 し た 値 よ り 小 さ く な け れ ば な ら な い 。 > を 指 定 し た 場 合 は 、 フ ァ イ ル 内 の 値 は 指 定 し た 値 よ り 大 き く な け れ ば な ら な い 。 & を 指 定 し た 場 合 は 、 指 定 し た 値 で 立 っ て い る 全 て の ビ ッ ト が フ ァ イ ル 内 の 値 で も 立 っ て い な け れ ば な ら な い 。 ^ を 指 定 し た 場 合 は 、 指 定 し た 値 で 立 っ て い る ど の ビ ッ ト も 、 フ ァ イ ル 内 の 値 で 立 っ て い て は な ら な い 。 x は ど ん な 値 に も マ ッ チ す る 。 文 字 が 省 略 さ れ て い る 場 合 は 、 = が 指 定 さ れ て い る と み な さ れ る 。 数 値 は C 言 語 の 書 式 で 指 定 す る 。 例 え ば 、 13 は 10 進 数 、 013 は 8 進 数 、 0x13 は 16 進 数 で あ る 。 文 字 列 の 場 合 、 フ ァ イ ル 中 に 含 ま れ る バ イ ト 文 字 列 は 、 指 定 さ れ た バ イ ト 文 字 列 に マ ッ チ し な け れ ば な ら な い 。 演 算 子 =, <, > は 文 字 列 に も 適 用 で き る (た だ し & は 適 用 で き な い )。 マ ッ チ ン グ を 行 う 長 さ は 、 magic フ ァ イ ル の 文 字 列 引 数 の 長 さ で あ る 。 つ ま り 、 >\0 を 指 定 す る こ と に よ り 、 あ る 行 を ど ん な 文 字 列 に も マ ッ チ さ せ 、 そ し て 多 分 そ の 文 字 列 を 表 示 さ せ る こ と が で き る だ ろ う 。

message 比 較 が 成 功 し た と き に 出 力 さ れ る メ ッ セ ー ジ 。 文 字 列 に printf(3) の 書 式 指 定 が 含 ま れ て い る 場 合 、 こ の メ ッ セ ー ジ を 書 式 指 定 文 字 列 と し て 使 っ て フ ァ イ ル 内 の 値 (指 定 さ れ た 全 て の マ ス ク 処 理 は 実 行 さ れ る ) が 出 力 さ れ る 。 一 部 の フ ァ イ ル フ ォ ー マ ッ ト で は 、 フ ァ イ ル の 種 類 と と も に 追 加 情 報 が 表 示 さ れ る 。 文 字 > で 始 ま る 行 は 、 追 加 で 行 う テ ス ト と 表 示 メ ッ セ ー ジ を 示 す 。 1 行 に 含 ま れ る > の 数 は テ ス ト の レ ベ ル を 表 す 。 先 頭 に > が な い 行 は レ ベ ル 0 に な る 。 レ ベ ル n+1 の 各 行 は 、 magic フ ァ イ ル 中 で 自 分 よ り 前 に あ る レ ベ ル n の 行 の う ち 、 最 も 近 い 位 置 の も の の 制 御 に 従 う 。 レ ベ ル n の 行 の テ ス ト が 成 功 す る と 、 そ れ に 続 く 全 て の レ ベ ル n+1 の 行 で 指 定 さ れ て い る テ ス ト が 実 行 さ れ 、 そ の テ ス ト が 成 功 す る と メ ッ セ ー ジ が 出 力 さ れ る 。 次 に n が あ っ た 場 所 で こ の 動 作 は 終 了 す る 。 直 前 の > の 直 後 の 文 字 が ( な ら ば 、 括 弧 の 後 の 文 字 列 は 間 接 オ フ セ ッ ト 値 と 解 釈 さ れ る 。 つ ま り 、 括 弧 の 後 の 数 字 は フ ァ イ ル 内 で の オ フ セ ッ ト と し て 使 わ れ る 。 こ の オ フ セ ッ ト 位 置 に あ る 値 が 読 み 込 ま れ 、 読 み 込 ま れ た 値 が フ ァ イ ル 中 で の オ フ セ ッ ト と し て 使 わ れ る 。 間 接 オ フ セ ッ ト 値 の 書 式 は 以 下 で あ る : ((x[.[bslBSL]][+−][y]). x の 値 は フ ァ イ ル 内 で の オ フ セ ッ ト 値 と し て 使 わ れ る 。 そ の オ フ セ ッ ト 位 置 に あ る byte 型 、 short 型 、 long 型 の 値 が 読 み 込 ま れ る が 、 ど の 型 に な る か は 型 指 定 子 [bslBSL] に よ っ て 決 ま る 。 大 文 字 で 示 さ れ る 型 は ビ ッ グ エ ン デ ィ ア ン の 値 と 解 釈 さ れ 、 小 文 字 で 示 さ れ る 型 は リ ト ル エ ン デ ィ ア ン の 値 と 解 釈 さ れ る 。 こ の 数 ま で y の 値 に 加 え ら れ 、 そ の 結 果 が フ ァ イ ル 中 の オ フ セ ッ ト 値 と し て 使 わ れ る 。 何 も 指 定 さ れ て い な い 場 合 の デ フ ォ ル ト の 型 は long で あ る 。 前 の フ ィ ー ル ド の 長 さ に よ っ て オ フ セ ッ ト 値 が 変 わ る た め 、 正 確 な オ フ セ ッ ト 値 が わ か ら な い 場 合 も あ る 。 こ の 場 合 は 、 直 前 の 上 位 レ ベ ル の フ ィ ー ル ド の 終 わ り か ら の 相 対 位 置 で オ フ セ ッ ト を 指 定 で き る (当 然 な が ら こ の 方 法 は サ ブ レ ベ ル の テ ス ト 、 つ ま り > で 始 ま る テ ス ト で し か 使 え な い )。 こ の よ う な 相 対 オ フ セ ッ ト 値 は 、 オ フ セ ッ ト 値 の 前 に & を 置 く こ と で 指 定 す る 。

バ グ

long, belong, lelong, short, beshort, leshort, date, bedate, ledate の 書 式 は シ ス テ ム 依 存 で あ る 。 識 別 さ せ る フ ァ イ ル は 、 こ の 長 さ が 違 う シ ス テ ム か ら 持 っ て く る こ と が 多 い た め 、 バ イ ト 列 と し て 指 定 す べ き だ ろ う (2B, 4B 等 )。

(現 時 点 で は ) 間 接 オ フ セ ッ ト 値 で エ ン デ ィ ア ン を 指 定 し て デ ー タ を 扱 う こ と は で き な い 。

関 連 項 目

file(1) − こ の フ ァ イ ル を 読 む コ マ ン ド 。