file(1) と Magic(5): 他の形式の説明

file(1) と Magic(5): 他の形式の説明

使えfileますmagichttp://linux.die.net/man/5/magic)他の既知の形式の説明を無視するには?

たとえば、次の形式を説明したいと思います。

ただテキストファイルですね

または

これは、マジックナンバーで始まる「ちょうど」gzip圧縮ファイルです。BAM\1

どのような例を知っていますか?

マジック形式を使用する代わりに、ファイルをテストするためのカスタムCコードを提供できますか?

答え1

この-mオプションを使用して代替マジックファイルのリストを指定でき、そのリスト/usr/share/file/magic.mgc(マイシステム)でコンパイルされたマジックファイルの前に独自のマジックファイルを含めると、そのモードは「グローバル」モードの前にテストされます。コマンドを実行して、オプションが常に透過的に使用されるように関数またはエイリアスを作成できますfile

マジックファイルで使用される言語は非常に強力なので、カスタムCエンコーディングに戻す必要はほとんどありません。私がこれをしようとした唯一の時は、HTMLとXMLファイルを一致させるのが難しかった90年代でした。当時は、1つのパターンを解析して<HTML使用できる柔軟な大文字と小文字の一致を持つ方法がなかったからです< Html< html。 「文字列」モードの修飾子としてCで実装されました。大文字と小文字を無視してスペースを圧縮(オプション)できます。

これらの変更はCに必要です。そして魔法文書の角色。それ以来、ソースコードが大幅に変更されていない限り、これらのCコードの変更と一致するように常にファイルの規則を変更(または追加提供)する必要がありますfilemagicしたがって、これを達成するためにマジックファイルを変更しようとし、うまくいかない場合はCコードを再度変更することをお勧めします。

答え2

これを見つけて$(user_searchengine)ユーザーの場合:

BAMのような簡単なルールは次のとおりです。
OFFSET TYPE [OPERAND]FLAG MESSAGE
BAMの場合:
0 string BAM\1 BAM
ヘッダーが見つかるとBAM文字列が印刷されます。

より多くの情報を知りたい場合このIBMサイト情報が少し古いようですが、単純なユースケースにはまだ十分です。 男性形式に関する豊富な情報もあります。

答え3

-mマンページのdocumentendはfile(1)デフォルトでその~/.magicファイル(またはコンパイルされたバージョン)を読み取るため、常にそのオプションを使用する必要はありません。~/.magic.mgcしたがって、システム全体/usr/share/magic*または/etc/magic

関連情報