magic(5) FreeBSD 一般コマンドマニュアル

magic

前のページ 上に戻る 次のページ

magic


     ジックファイルのフォーマットについて説明します。 file コマンドは、他のテ
     ストと共に、ファイルがある マジック番号で始まっているかどうかをテストし
     て、ファイルのタイプを識別します。ファイル /usr/share/misc/magic では、ど
     のマジック番号をテストするか、あるマジック番号が見つかったときにどのよう
     なメッセージを出力するか、また、そのファイルから抽出するべき追加情報につ
     いて指定しています。

     このファイルの各行ではテストすべき項目について指定しています。テストは、
     ファイル中のある特定のオフセットで始まるデータを 1 バイト、2 バイトもしく
     は 4 バイトの数値あるいは文字列と比較して行います。もしテストが成功すると
     メッセージが出力されます。各行は以下のフィールドから構成されます。

     offset  テストするファイルのデータのオフセットをバイト数で指定する数字で
             す。

     type    テストするデータの型です。指定できる値は

             byte    1 バイトの値。

             short   (ほとんどのシステムにおいて) 2 バイトの値。そのマシンの固
                     有のバイト順で指定します。

             long    (ほとんどのシステムにおいて) 4 バイトの値。そのマシンの固
                     有のバイト順で指定します。

             string  バイトの文字列。文字列タイプの指定には、後ろに /[Bbc]* を
                     付けることが可能です。 ``B'' フラグは、ターゲットの空白を
                     圧縮します。圧縮対象には、少なくともひとつの空白文字が含
                     まれることが必要です。マジックに "n" 個の連続する空白があ
                     る場合、マッチするためには、ターゲットには少なくとも "n"
                     個の連続する空白があることが必要です。 ``b'' フラグは、す
                     べての空白を省略可能な空白として扱います。最後に ``c''
                     は、大文字小文字を区別しないマッチングを指定します。すな
                     わち、マジック中の小文字は、ターゲット中の小文字と大文字
                     の両方にマッチします。一方、マジック中の大文字は、ター
                     ゲット中の大文字にのみマッチします。

             date    UNIX 日時として解釈される 4 バイトの値。

             beshort
                     (ほとんどのシステムにおいて) 2 バイトの値。ビッグエンディ
                     アンのバイト順です。

             belong  (ほとんどのシステムにおいて) 4 バイトの値。ビッグエンディ
                     アンのバイト順です。

             bedate  UNIX 日時として解釈される (ほとんどのシステムにおいて) 4
                     バイトの値。ビッグエンディアンのバイト順です。

             leshort
                     (ほとんどのシステムにおいて) 2 バイトの値。リトルエンディ
                     アンのバイト順です。

             数値の前には実行される操作を示す文字を付加することができます。そ
             の文字にはファイルの値が指定された値と等価であることを指定する =
             、ファイルの値が指定された値より小さいことを指定する < 、ファイル
             の値が指定された値より大きいことを指定する > 、指定された値の中で
             セットされているすべてのビットがファイルでの値ですべてセットされ
             ていることを指定する & 、指定された値の中でセットされているどれか
             のビットがファイルでの値でオフであることを指定する ^ 、何らかの値
             がマッチすることを指定する x があります。これらの文字がない場合は
             = が指定されているものとみなされます。

             数値は C 言語の形式で指定されます。例えば 13 は 10 進数、 013 は
             8 進数、 0x13 は 16 進数となります。

             文字列値については、ファイル中のバイト文字列は指定されたバイト文
             字列にマッチしなければなりません。オペレータ =<> ( & を除
             く) が文字列に適用できます。マッチングに使用される長さはマジック
             ファイルでの文字列の引数の長さとなります。これは >\0 とすることに
             より、その行はどの文字列にもマッチすることが可能であり、おそらく
             その文字列が出力されることを意味します (すべての文字列はヌル文字
             列より長いため)。

     message
             比較が成立したときに出力されるメッセージです。文字列に printf(3)
             指定形式が含まれている場合は、ファイルから得た値 (指定されたマス
             クを適用したもの) が、そのメッセージをフォーマット文字列として用
             いて出力されます。

     いくつかのファイルフォーマットは、ファイルタイプと共に出力される追加情報
     を含んでいます。文字 > で始まる行は追加テストと出力されるメッセージを指定
     します。その行での > の数はテストのレベルを指定します。行頭に > がない行
     はレベル 0 とみなされます。レベル n+1 の各行はマジックファイル中でその行
     より前にあるもっとも近いレベル n の行の制御下にあります。レベル n での行
     のテストが成功した場合、それに続く行で指定されたすべてのレベル n+1 のテス
     トが実施され、それらのテストが成功するとメッセージが出力されます。次のレ
     ベル n の行でこれが終了します。最後の > に続く最初の文字が ( であれば、そ
     の括弧の後の文字列は間接オフセットとして解釈されます。これは括弧の後の数
     字がそのファイル中のオフセットとして使用されることを意味します。そのオフ
     セットでの値が読み込まれ、再度ファイルのオフセットとして使用されます。間
     接オフセットは (x[.[bslBSL]][+-][y]) の形式をとります。値 x はファイル中
     でのオフセットとして使われます。型指定子 [bslBSL] によりそれぞれバイ
     ト、short もしくは long として読み込まれます。大文字の型は、値をビッグエ
     ンディアンとして解釈し、小文字の型は、値をリトルエンディアンとして解釈し
     ます。その数字に値 y が加算され、その結果はファイルの中でのオフセットとし
     て使用されます。型指定子がない場合は long がデフォルトの型となります。

     オフセットは、その前にあるフィールドの長さに依存するため、正確な値が分か
     らない場合があります。そのような場合は最後の上位レベルのフィールドの最後
     からの相対的なオフセットを指定することができます。 (もちろんこれは下位レ
     ベルのテスト、すなわち > で始まるテストでのみ可能です。) この場合の相対オ
     フセットは & をオフセットのプレフィックスとして使用して指定します。


ABELNET VPSサービス