2016-11-21 49 views
0

我需要扫描一个包含一些unix shell命令及其输出的文件。我需要提取整个文件中提到的unix命令列表,并将它们列在不同的文件中。一种实现它的方法是扫描文件中的某些特定命令列表,如果存在则将它们重定向到不同的文件。但是随着名单不断增长,这变得困难。此行中的任何其他想法。 TIA识别文件中的所有unix命令

+0

假设你想要的是确定任意脚本在执行过程中可以调用哪些命令,如果你需要它来覆盖所有的角落情况(包括'eval'使用情况),那么正确实现这一点是不可能的。什么是真实世界的设计约束和要求,所以我们可以确定一个足够好的实现是否存在(以及它是否实际上足够好)? –

+0

......如果你能够澄清这个问题,我们就不需要假设你是或不是要求什么,这将会有所帮助。 –

+1

你能举一个文件内容的例子吗?它只是'script'命令的输出吗?如果每个命令前面都有提示字符串,那么提取命令相当容易,尽管它不会很完美。 –

回答

1

您可以通过compgen获得bash中所有可用命令的列表。如果您想使用白名单方法,您可以将compgen -ac(别名和命令)的输出存储在文件中,然后根据该列表检查输入文件中的每个令牌。

有关使用compgen的更多详细信息,请参见this answer

+0

嗯。我读它的方式是,OP试图找出哪些命令可能在特定脚本执行期间被调用(如通过对该脚本的文本/静态分析),而不是系统上存在哪些命令 - 但是问题这里确实有点含糊。 –