file
とmagic
( http://linux.die.net/man/5/magic )を使用して、他の既知の形式の説明を上書きできますか?
たとえば、次の形式について説明したいと思います。
それは「ただの」テキストファイルです
または
つまり、マジックナンバーBAM\1
で始まるgzipファイルです。
?
何か例を知っていますか?
魔法の形式を使用する代わりに、ファイルをテストするためのカスタムCコードを提供することは可能ですか?
-m
オプションを使用して、マジックファイルの代替リストを指定できます。コンパイルされたマジックファイル(私のシステムでは/usr/share/file/magic.mgc
)の前に独自のリストを含めると、それらのパターンは以前にテストされます。 「グローバル」なもの。 file
コマンドを発行するだけで、そのオプションを透過的に常に透過的に使用する関数またはエイリアスを作成できます。
マジックファイルで使用される言語は非常に強力であるため、カスタムCコーディングに戻す必要はほとんどありません。 <HTML
を解析するために必要な柔軟なケーシングとオフセットのマッチングを行う方法が(当時)なかったため、HTMLファイルとXMLファイルのマッチングが困難だった90年代に私がそうしたいと思ったのは唯一のことでした。および< Html
および< html
を1つのパターンで。これを「文字列」パターンの修飾子としてCに実装しました、 大文字と小文字を区別せず、(オプションの)空白を圧縮できます 。
Cでのこれらの変更は必要です マジックファイルの適応も 。それ以降、file
ソースコードが大幅に変更されていない限り、それらのCコードの変更に一致するmagic
ファイルのルールを常に変更(または追加)する必要があります。したがって、マジックファイルのみを変更してそれを実行することから始めて、それが実際にうまくいかない場合は、Cコードの変更にフォールバックすることをお勧めします。
常に_-m
_オプションを使用する必要はありません。マンページのdocumentendとして、file(1)
はデフォルトで_~/.magic
_ファイル(またはそのコンパイル済みバージョン:_~/.magic.mgc
_)も読み取るため、そこに定義を追加できます。システム全体の_/usr/share/magic*
_または_/etc/magic
_をいじる必要はありません。