“file”命令:指定 /etc/magic 文件中“search”选项的搜索深度?

“file”命令:指定 /etc/magic 文件中“search”选项的搜索深度?

我如何指定'的距离/深度文件' 命令应在文件中搜索以找到“搜索“ 定义 ?

我正在尝试创建一个通用规范“/etc/魔法“对于多种口味序言,这样我就可以对导入的谓词库进行大规模转换,以重新定位到我的个人项目环境。

审查了一些“目标”文件后,我相信我需要在前 3K 个字符内搜索一个文件,将此视为一种相当成功的方法。

到目前为止,我已经尝试过这两种口味/定义,但没有成功:

[1] 0   search/3072 [Pp][Rr][Oo][Ll][Oo][Gg]    Prolog Predicate File (ISO-Compliant Prolog), ASCII text 

[2] 0   search  [Pp][Rr][Oo][Ll][Oo][Gg]    Prolog Predicate File (ISO-Compliant Prolog), ASCII text 

第二个成功,但前提是在文件的第一行中找到该模式。

另外,我尝试了以下定义:

[3] 0       search  :-      Prolog Predicate File (Non-Specific :-)

[4] 0      string  %       Prolog Predicate File (Non-Specific %), ASCII text

但是,当我在第 [2] 行条目下方输入 [3] 或 [4] 中的任何一个时,这些似乎会覆盖 [2] 的有效性。另外,出于某种原因,无论文件中的优先顺序如何,[3] 似乎“克服”了任何在我看来应该与 [4] 匹配的实例。

这引出了我的问题:如何告诉“file”命令在我的魔术文件中遇到的第一个匹配项退出并报告该情况?

我还定义了这组初始的其他规范,以标准化将被处理以符合要求的文件:

0   string  %%Prolog    Prolog Predicate File (Non-Specific)
0   string  %%gprolog   Prolog Predicate File (GNU Prolog)
0   string  %%swipl     Prolog Predicate File (SWI-Prolog)
0   string  %%yap       Prolog Predicate File (YAP Prolog)
0   string  %%eclipse   Prolog Predicate File (ECLiPSe)
0   string  %%bprolog   Prolog Predicate File (B-Prolog)
0   string  %%poplog    Prolog Predicate File (Poplog)
0   string  %%lpaprolog Prolog Predicate File (LPA Prolog)
0   string  %%isoprolog Prolog Predicate File (ISO-Compliant Prolog)

我创建了最后一个定义,以便我可以专门标记那些我已确认符合 ISO Prolog 规范的谓词文件。

我愿意不是想要使用“shebang”(即#!/bin/gprolog)符号来自动检测执行的第一行。

[额外的]我刚刚发现了一个陷阱。如何配置安装以确保在自定义 /etc/magic 条目之前评估任何标准/内置“shebang”表示法,但同时在任何其他魔法序列之前评估我的 /etc/magic 定义?

关于搜索深度规范的指导将不胜感激。

相关内容