“魔法测试”对 file 命令意味着什么?

Abd*_*UMI 20 file-command terminology file-format

我正在阅读有关file命令的内容,但遇到了一些我不太明白的事情:

file 旨在确定被查询的文件类型.... file 通过对相关文件执行组测试来实现这一点:

  • 文件系统测试,
  • 魔法测试,
  • 语言测试

什么是魔法测试?

Mic*_*mer 29

这里的“magic”指的是“ magic numbers ”:一个特殊的值,它位于文件中的已知位置,用于标识其类型。该file命令具有这些数字及其对应的类型的数据库。该数据库附带的库称为libmagic,您可以从自己的程序中访问它。

它们不一定是我们可能认为的“数字”。例如,PNG 图像文件始终以“\x89PNG\r\n\x1a\n”开头,Java 类以四个字节(十六进制)CA FE BA BE 开头,而 HTML 文件在某处具有“< html”接近开始。它只是已知存在于该类型文件中的一些小数据序列,通常非常接近开头。

当人们定义文件格式时,他们通常会有意地在其中包含其中一种格式,或者只是作为使格式组合在一起的一部分。file之后可以使用它们。它还有其他方法可以实际查看文件的内容以猜测它是什么(“语言测试”)。

  • 请注意,最初,“幻数”特别是可执行文件的前两个字节,内核使用它以适当的方式加载它。`#!` 实际上就是一个例子,因为内核本身在看到这些字节时应该调用后面的命令。 (6认同)

Hau*_*ing 16

这是指许多文件格式在文件开头的“魔术字节”,显示这是什么类型的文件。

例如,如果文件以 开头,#!则它被视为脚本。