ファイルコマンドにとって「マジックテスト」とはどういう意味ですか?


20

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

ファイルは、ファイルを実行することによって、これを達成する....照会されているファイルの種類を決定するために設計された3つの問題のファイルにテストのセットを:

  • ファイルシステムのテスト、
  • マジックテスト、
  • 言語テスト

マジックテストとは何ですか?

回答:


15

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

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


28

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

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

ファイル形式を定義するとき、多くの場合、意図的に、または形式を合わせるための一部として、これらのいずれかをファイル形式に含めます。file後で使用できます。また、ファイルの内容を実際に見て、それが何であるかを推測する他の方法もあります(「言語テスト」)。


6
もともと、「マジックナンバー」は、具体的には、カーネルが適切な方法でロードするために使用する実行可能ファイルの最初の2バイトでした。#!これらのバイトを見ると、カーネル自体が後続のコマンドを呼び出すことになっているため、実際にはこの例です。
IMSoP 14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.