尝试使用括号重命名文件,但我一直遇到此错误,无法找到任何文档:
-bash: syntax error near unexpected token `('
我做了类似的事情:
git mv title_1.1 title_(1.1)
答案 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_]不匹配的文件名,即字母数字字符,短划线,点和下划线。