如何在 bash rmdir 中转义括号?

如何在 bash rmdir 中转义括号?

我有一个目录,其名称类似于10.2 (14C92)我想使用 rmdir -rf 删除的目录(以包含其内容)。我确实知道如何传递空格,\但我得到了结果:

-bash: syntax error near unexpected token ('

所以在我看来,我必须以某种方式从命令中转义括号。我如何正确地做到这一点?

答案1

你可以用\它来逃脱任何单个字符,()像您已经对空格所做的那样包含在内。虽然它有效,但如果您有很多字符/空格需要转义,它可能会很麻烦。

更快的替代方法是使用单引号') 逃离整个字符串,即类似:

rm -rf '10.2 (14C92)'

请牢记'逃生一切,因此,如果您需要(例如,引号内的变量扩展),请小心使用它。也就是说,使用双引号适用于转义空格和括号,还:

rm -rf "10.2 (14C92)"

另外,根据您的问题,您尝试使用rmdir.rmdir仅适用于空目录并且它没有-r和/或-f标志:

NAME rmdir - 删除空目录

概要 rmdir [选项]...目录...

描述 删除目录,如果它们是空的

你会想要使用rm -rf.
如果10.2 (14C92)确实为空,一个简单的

rmdir '10.2 (14C92)'

会做。

转义是由其bash本身完成的,因此它适用于每个命令。换句话说,它bash决定了什么传递给命令,命令根据自己的解析规则对参数进行操作 bash已经解析了它们。

答案2

你已经走在正确的道路上了。您也可以使用转义字符\作为括号。

rm -r 10.2\ \(14C92\)

您还可以使用引用:

rm -r '10.2 (14C92)'

答案3

rm -rf 10.2\ \(14C92\)/- 递归删除此文件夹10.2\ \(14C92\)/及其所有内容。

相关内容