嘗試使用括號來重命名文件,但我一直在打這個錯誤並不能找到它周圍的任何文檔:使用括號,git的MV
-bash: syntax error near unexpected token `('
我做這樣的事情:
git mv title_1.1 title_(1.1)
嘗試使用括號來重命名文件,但我一直在打這個錯誤並不能找到它周圍的任何文檔:使用括號,git的MV
-bash: syntax error near unexpected token `('
我做這樣的事情:
git mv title_1.1 title_(1.1)
括號對於shell來說是特殊的 - 它們在定義函數,聲明數組,使用命令替換和subhells時使用。
要按字面意義使用它們,如文件名,只需添加適當的引用:
git mv title_1.1 "title_(1.1)"
注墊的警告,但。這是一箇中等風險的文件名,可能會導致某些寫得不好的工具和腳本窒息。它比有空格要好,但比字母數字更糟。
圓括號用於表示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_]不匹配的文件名,即字母數字字符,破折號,圓點和下劃線被認爲是一種好的做法。
只要自己幫忙,不要這樣做。這會給你無窮無盡的問題(寫得不好)。 – Mat 2015-03-08 20:31:17
而且,不幸的是,你會遇到的大多數腳本都寫得很糟糕。 – Balthamos 2015-03-08 21:19:59
雖然大部分寫得很差的腳本都可以在文件名中使用parens。只有那些添加了第二級評估的評估,如'ssh'或'eval',纔會有問題。你的平均寫得不好的腳本只是沒有正確引用就可以。 – 2015-03-08 21:29:00