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

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

我如何指定'文件' 命令应该在文件中搜索以找到匹配项“搜索“ 定义 ?

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

在审查了一些“目标”文件后,我认为我需要在前 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] 匹配的实例。

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

我还定义了这组初始的其他规范来规范化需要修改的文件:

0   string  %%Prolog    Prolog Predicate File [Non-Specific], ASCII text 
0   string  %%gprolog   Prolog Predicate File [GNU Prolog], ASCII text 
0   string  %%swipl     Prolog Predicate File [SWI-Prolog], ASCII text 
0   string  %%yap       Prolog Predicate File [YAP Prolog], ASCII text 
0   string  %%eclipse   Prolog Predicate File [ECLiPSe], ASCII text 
0   string  %%bprolog   Prolog Predicate File [B-Prolog], ASCII text 
0   string  %%poplog    Prolog Predicate File [Poplog], ASCII text 
0   string  %%lpaprolog Prolog Predicate File [LPA Prolog], ASCII text 
0   string  %%isoprolog Prolog Predicate File [ISO-Compliant Prolog], ASCII text 

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

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

[额外的]我刚刚发现了一个问题。我该如何配置安装以确保在我自定义的 /etc/magic 条目之前评估任何标准/内置“shebang”符号,但同时让我的 /etc/magic 定义在任何其他 magic 序列之前进行评估?

如能提供有关搜索深度规范的指导,我们将不胜感激。

相关内容