1

私の OSX マシンでは、インプレース sed のバックアップ文字として ~ を使用できません。他のキャラでもいいです。私が得るエラーは... cryptic:rename(): Not a directoryです。

例:

$ 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
4

1 に答える 1

4

Bash は、スタンドアロンのチルダ ( ~) を $HOME に自動的に展開します。

$ echo ~
/Users/hraban

したがって、 にsed -i ~なりsed -i /home/you、sed が--- 存在しないディレクトリに名前barを変更しようとします。bar/home/youこれを修正するには、bash でチルダをエスケープします。

$ sed -i \~ -e s/foo/hello/ bar
$ cat bar
hello
于 2017-04-16T18:24:43.960 に答える