批量修正DOCK3.7脚本中#!/bin/env python的Shebang问题
批量修正DOCK3.7脚本中#!/bin/env python的Shebang问题
我完全懂你手动改一堆脚本shebang的痛苦——这事儿太费时间了!好在有几个批量处理的命令能帮你一次性搞定所有有问题的脚本,不用一个个点开编辑。
方法一:用find+sed批量替换
直接在DOCK3.7的脚本根目录下运行这条命令,它会自动找到所有包含错误shebang的文件并原地修正:
find /path/to/DOCK3.7/scripts -type f -exec sed -i 's^#!/bin/env python^#!/usr/bin/env python^' {} +
解释一下:
find:遍历指定目录下的所有普通文件(-type f)sed -i:原地修改文件内容- 用
^作为分隔符而不是常规的/,是因为路径里本身就有/,避免命令报错 {} +:把找到的文件批量传给sed,比逐个处理效率更高
方法二:先筛选再替换(更精准)
如果担心误改其他文件,可以先用grep找出所有明确包含错误shebang的脚本,再批量替换:
grep -rl "#!/bin/env python" /path/to/DOCK3.7/scripts | xargs sed -i 's^#!/bin/env python^#!/usr/bin/env python^'
grep -rl:递归查找包含指定内容的文件,并输出文件路径xargs:把grep找到的文件列表传给sed处理
注意事项
- 先备份! 操作前最好复制一份脚本目录,或者给
sed加备份参数-i.bak,这样修改后会保留原文件的备份(比如script.py.bak),防止意外出错:sed -i.bak 's^#!/bin/env python^#!/usr/bin/env python^' filename.py - 确认你的
env确实在/usr/bin/env下——Ubuntu 20.04里默认是这个路径,所以修改后的shebang是正确的,不会再出现找不到python解释器的问题。
这些方法应该能帮你几分钟内搞定所有脚本,不用再手动逐个修改啦!
备注:内容来源于stack exchange,提问作者Anthony
相关产品推荐
相关产品推荐

