2017-04-16 5 views
1

OSXマシンでは、インプレースのバックアップ文字として〜は使用できませんsed。他の文字は問題ありません。私が得るエラーは...暗号:rename(): Not a directoryOSX上でsed -iバックアップ文字にチルダ(〜)を使用できません: "sed:rename():ディレクトリではありません"

例:

$ 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について、とスタンドアロンチルダを持つようにして、エラーメッセージが何が起こっているのか説明していないことが判明したが、これは一般的なコマンドですに。私はこのことを理解するのに1ヶ月かかりましたが、dtrussを打ち破らなければならず、最終的には非常に愚かであると感じました。 – hraban

答えて

4

バッシュは自動的には$ HOMEにスタンドアロンチルダ(~)を拡張します。

$ echo ~ 
/Users/hraban 

したがって、sed -i ~barの名前を変更 にしようとするSEDつながる、sed -i /home/youなり、 〜bar/home/you ---存在しないディレクトリ。この問題を解決するには、bashでチルダをエスケープ :

$ sed -i \~ -e s/foo/hello/ bar 
$ cat bar 
hello 
関連する問題