我正在尝试使用带有此命令的控制台删除文件
rm ./google-chrome-stable_current_amd64(1).deb
Run Code Online (Sandbox Code Playgroud)
但我收到语法错误。这个命令有什么问题?
括号由外壳特别处理。引用它们以删除它们的特殊含义,以便外壳按字面意思对待它们。
有三种主要的引用形式,为此目的,它们中的任何一种都可以:
(和)不是'字符,因此它们在单引号内按字面意思处理(只要单引号本身没有被引用)。$, `, \, 或!,所以它们在双引号内按字面意思处理(只要双引号本身没有被引用)。\字面意思处理(只要反斜杠本身没有被引用)。因此,以下任何一项都将起作用:
rm ./google-chrome-stable_current_amd64\(1\).deb # backslashes
Run Code Online (Sandbox Code Playgroud)
rm './google-chrome-stable_current_amd64(1).deb' # single quotes
Run Code Online (Sandbox Code Playgroud)
rm "./google-chrome-stable_current_amd64(1).deb" # double quotes
Run Code Online (Sandbox Code Playgroud)
虽然不太常用,但您也可以使用单引号或双引号来引用小于完整参数的内容。例如,这些也有效:
rm ./google-chrome-stable_current_amd64'(1)'.deb
Run Code Online (Sandbox Code Playgroud)
rm ./google-chrome-stable_current_amd64"(1)".deb
Run Code Online (Sandbox Code Playgroud)
另外,请注意,./此处不需要路径中的前导,但可以包含它。使用rm,只有当路径以-字符开头时才需要它,这rm会尝试将其视为一个或多个选项而不是路径。(尽管您也可以--在路径之前传递一个单独的参数,以指示所有单独的参数都是路径而不是选项。)