如何在bash rmdir中转义括号?

pro*_*cra 5 bash directory rm

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

-bash: syntax error near unexpected token ('

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

Mr *_*unz 6

您可以使用\转义任何单个字符,()像使用空格一样包含在内。虽然它有效,但如果您有很多字符/空格要转义,则可能会很麻烦。

更快的替代方法是使用单引号( ') 来转义整个 string,例如:

rm -rf '10.2 (14C92)'
Run Code Online (Sandbox Code Playgroud)

请记住,'转义所有内容,因此如果需要,请小心使用它,例如,引号内的变量扩展。也就是说,使用双引号也适用于转义空格和括号:

rm -rf "10.2 (14C92)"
Run Code Online (Sandbox Code Playgroud)

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

NAME rmdir - 删除空目录

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

描述 删除 DIRECTORY(ies),如果它们是空的

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

rmdir '10.2 (14C92)'
Run Code Online (Sandbox Code Playgroud)

会做。

转义是bash自己完成的,所以它适用于每个命令。换句话说,这是bash它决定什么传递给命令,根据自己的分析规则,命令,然后作用于争论之后 bash解析了它们。