2017-04-16 10 views
1

在我的OSX的機器,我不能用〜作爲備份字符就地SED。任何其他角色都很好。我得到的錯誤是......神祕:rename(): Not a directory無法在OSX使用SED -i備份字符符號(〜):「sed的:重命名():不是一個目錄」

例子:

$ echo foo > bar 
$ sed -i ~ -e s/foo/hello/ bar 
sed: rename(): Not a directory 
$ ls -1 
bar 
$ cat bar 
foo 
$ sed -i _ -e s/foo/hello/ bar 
$ ls -1 
bar 
bar_ 
$ cat bar 
hello 
$ cat bar_ 
foo 
+0

實際上不是關於sed的,事實證明,但是這是一種常見的命令有一個獨立的波浪線與和錯誤消息不解釋這是怎麼回事上。花了我一個月的時間來解決這個問題,不得不突破困境,最終感到非常愚蠢:希望它能幫助某個人。 – hraban

回答

4

猛砸自動展開一個獨立的波浪線(~)到$ HOME:

$ echo ~ 
/Users/hraban 

因此,sed -i ~變得sed -i /home/you,從而導致sed的嘗試 命名barbar/home/you ---一個不存在的目錄。爲了解決這個問題, 撤消代字號在bash:

$ sed -i \~ -e s/foo/hello/ bar 
$ cat bar 
hello