在bash命令中使用括号,git mv

时间:2015-03-08 20:23:26

标签: bash git-bash

尝试使用括号重命名文件,但我一直遇到此错误,无法找到任何文档:

-bash: syntax error near unexpected token `('

我做了类似的事情:

git mv title_1.1 title_(1.1)

2 个答案:

答案 0 :(得分:5)

括号对于shell是特殊的 - 它们在定义函数,声明数组,使用命令替换和子shell时使用。

要像字面名一样使用它们,只需添加适当的引号:

git mv title_1.1 "title_(1.1)"

请注意Mat的警告。这是一个中等风险的文件名,可能会导致某些写得不好的工具和脚本窒息。它比拥有空格更好,但比字母数字更糟糕。

答案 1 :(得分:4)

括号用于表示posix下的子shell,因此它们是sh,bash,ksh等下的保留字。要告诉shell你希望括号不作为shell语法的一部分,你可以引用它们:

git mv title_1.1 "title_(1.1)"

git mv title_1.1 'title_(1.1)'

或者你可以逃脱它们:

git mv title_1.1 title_\(1.1\)

但是,shell脚本通常不会考虑这一点,这意味着当尝试处理使用括号的文件名时,很多都会破坏。

最好避免使用与正则表达式[-.a-zA-Z0-9_]不匹配的文件名,即字母数字字符,短划线,点和下划线。