如何让GNU Parallel不再自动插入单引号?
解决GNU Parallel自动插入单引号的问题
要让GNU Parallel永远不自动插入单引号,可以使用--no-shellquote选项(等价于--shellquote off),它会禁用Parallel对参数的自动shell转义处理。
修改后的命令:
parallel --dry-run --no-shellquote sed -i "s/Text to replace/{.}/" {} ::: *.txt
执行后,无论文件名是否包含空格,输出都不会带有单引号:
- 带空格的文件输出示例:
sed -i "s/Text to replace/with space/" with space.txt - 无空格的文件输出示例:
sed -i "s/Text to replace/without_space/" filename_without.txt
注意事项
Parallel自动添加单引号是为了保证命令执行的安全性,避免空格、特殊字符等导致shell将文件名拆分为多个参数。如果去掉--dry-run实际执行命令,禁用引号会导致带空格的文件名报错,因此仅建议在需要统一--dry-run输出格式时使用该选项。
内容的提问来源于stack exchange,提问作者Geremia
相关产品推荐
相关产品推荐

