file(1) 和 magic(5) :描述其他格式

Pie*_*rre 8 file-command file-format

我可以使用filemagic( http://linux.die.net/man/5/magic ) 来覆盖其他一些已知格式的描述吗?

例如,我想描述以下格式:

那是“只是”文本文件

或者

那只是一个以幻数开头的压缩文件 BAM\1

?

你知道任何例子吗?

是否可以提供自定义 C 代码来测试文件而不是使用魔术格式?

Ant*_*hon 8

您可以使用该-m选项来指定魔术文件的备用列表,如果您/usr/share/file/magic.mgc在该列表中的已编译魔术文件(在我的系统上)之前包含您自己的文件,则这些模式将在“全局”文件之前进行测试。您可以创建一个函数或别名,以透明地始终透明地使用该选项,只需发出file命令即可。

魔术文件中使用的语言非常强大,因此很少需要恢复到自定义 C 编码。我觉得倾向于这样做的唯一的一次是在90年代,当匹配的HTML和XML文件是困难的,因为没有办法(当时)有灵活的外壳和偏移匹配必须能够解析<HTML< Html< html同一个模式. 我在 C 中实现了它作为“字符串”模式的修饰符,允许忽略大小写和压缩(可选)空白

C 语言中的这些更改也需要修改魔法文件。除非file此后源代码发生了重大变化,否则您将始终需要修改(或提供额外)magic文件中与那些 C 代码更改匹配的规则。因此,您不妨一开始尝试仅更改魔术文件,如果确实无法解决,则退回到更改 C 代码。