包含括号的文件名错误

jac*_*ack 12 shell bash quoting

当我尝试将文件名从 更改old.file(1).gz为 时new.file.gz,它说语法错误,我使用的是 ubuntu 12.04。

mv old.file(1).gz new.file.gz
bash: syntax error near unexpected token `('
Run Code Online (Sandbox Code Playgroud)

Jan*_*ari 23

Yeti 的评论对您有用,但如果您想知道原因,那是因为括号被解释为特殊字符,并且必须使用\或引用整个文件名进行转义(如上所述)[编辑:抱歉,只有 ( 和) 需要引用]。

如果您启用了 Tab 补全,只需输入文件名的前几个字符并点击 Tab。即,输入mv old并点击选项卡,应该变成mv old.file\(1\).gz(除非有其他潜在的文件old*可以参考)。

  • 整个文件名不需要引用。只有`()` 可以。如果你愿意,你可以做 `mv old.fil'e(1).'gz new.file.gz`。 (9认同)

小智 6

mv 'old.file(1).gz' new.file.gz
Run Code Online (Sandbox Code Playgroud)

应该解决问题。