我正在尝试编写一个脚本来列出 python 文件中的所有 shebang 行。
我想做的是
sudo bash -c 'for logf in $(find / -name "*.py"); do fgrep '#!/usr/bin' "$logf"; done'
这给出了错误bash: !/usr/bin': event not found
。我明白为什么,尽管错误的含义尚不清楚。
问题是我不知道如何bash
在不执行命令的情况下将包含另一个字符串的字符串传递给它。
如果我省略“#!”它可以工作,但当然还包括许多其他行。
我几乎尝试了转义和字符串的所有组合,但都没有成功。
答案1
感谢评论,我有两个可以工作的版本。请注意,我做了一些更改(仅在行首查找 shebang)并在 shebang 后允许有空格。
sudo bash -c 'for logf in $(find / -name "*.py"); do grep '^\\#\\!/usr/bin' "$logf"; done'
由于某种原因,当我试图在 shebang 之后留出空白时,我无法让它工作。
更好(也更简单)
sudo find / -name "*.py" -exec grep '^#! */usr/bin' {} \;