为什么sed -i
在符号链接上执行会破坏该链接并将其替换为目标文件?如何避免这种情况?
例如。
$ ls -l pet*
-rw-rw-r-- 1 madneon madneon 4 mar 23 16:46 pet
lrwxrwxrwx 1 madneon madneon 6 mar 23 16:48 pet_link -> pet
$ sed -i 's/cat/dog/' pet_link
$ ls -l pet*
-rw-rw-r-- 1 madneon madneon 4 mar 23 16:48 pet
-rw-rw-r-- 1 madneon madneon 4 mar 23 16:49 pet_link
Run Code Online (Sandbox Code Playgroud)
为什么它不被认为是一个错误?
Ank*_*nko 39
该-i
/--in-place
标记编辑到位的文件。默认情况下,sed
读取给定文件,将其输出到临时文件中,然后将临时文件复制到原始文件上,而不检查原始文件是否是符号链接。
GNUsed
有一个--follow-symlinks
标志,它可以按照您的意愿运行:
$ echo "cat" > pet
$ ln --symbolic pet pet_link
$ sed --in-place --follow-symlinks 's/cat/dog/' pet_link
$ cat pet
dog
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7974 次 |
最近记录: |