将明文文件标识为脚本的方法



我正在为Unix机器上的文件创建一个过滤器。我只想允许那些看起来不像脚本的纯文本文件通过。

为了检查纯文本,我检查文件的可执行部分,并使用perl中的-T文件测试。(我知道这不是100%,但它会捕获我最想避免的二进制文件)。我认为这将是足够的,但任何建议都是受欢迎的。

我的主要问题是识别纯文本文件何时是脚本。我写过的每个脚本都是从#!行开始的,所以我的第一个想法是读取文件的第一行,并阻止任何包含该行的脚本。有没有常见的非脚本纯文本文件以#!行开头,我会用假阳性标记?是否有更好/额外的方法来识别脚本?

这就是file命令(参见维基百科)的作用。它识别的不仅仅是she-bang(#!),还可以告诉你它是什么样的脚本(如果有的话)。

最新更新