web-dev-qa-db-ja.com

fileコマンドの「マジックテスト」とはどういう意味ですか?

fileコマンドについて読んでいたところ、よくわからないことがありました。

fileは、照会されるファイルの種類を判別するように設計されています。..fileは、問題のファイルに対してthreeテストセットを実行することでこれを実現します。

  • ファイルシステムテスト、
  • magicテスト、
  • 言語テスト

magicテストとは何ですか?

20
Abdennour TOUMI

これは、多くのファイル形式がファイルの最初に持っている「マジックバイト」を指し、これがどのような種類のファイルかを示します。

例えば。ファイルが#!で始まる場合、スクリプトと見なされます。

16
Hauke Laging

ここでの「マジック」とは、「 マジックナンバー 」:ファイル内の既知の場所にある、そのタイプを識別する特別な値を指します。 fileコマンドには、これらの数値とそれらが対応するタイプのデータベースがあります。そのデータベースに付属するライブラリは libmagic と呼ばれ、独自のプログラムからアクセスできます。

私たちが考えるように、それらは必ずしも「数字」ではありません。たとえば、PNG画像ファイルは常に「\ x89PNG\r\n\x1a\n」で始まり、Javaクラスは4バイト(16進数)で始まります)CA FE BA BE、およびHTMLファイルには、先頭のどこかに "<html"があります。これは、そのタイプのファイルに含まれていることがわかっている小さなデータシーケンスであり、通常は先頭に非常に近い場所です。

人々がファイル形式を定義しているとき、彼らはしばしばそれらの1つを意図的に、または形式を合わせるための一部としてその中に含めます。 fileは後でそれらを使用できます。また、実際にファイルの内容を調べてそれが何であるかを推測する別の方法もあります(「言語テスト」)。

29
Michael Homer