当我在“vi”编辑器中编辑文件时,文件的 inode 值正在发生变化。但是当用 cat 命令编辑时,inode 值不会改变。
我的问题类似于如何防止 sed -i 破坏符号链接?,但关于硬链接。
使用sed -i
对文件的工作写入到一个临时文件,然后移动这会破坏所有的文件有硬链接,因为sed的作品。该--follow-symlinks
参数在硬链接的情况下没有帮助。
是否有使用相当丑陋的替代方法:
sed 's/cat/dog/' pet_link > pet_link
Run Code Online (Sandbox Code Playgroud) sed -i
在符号链接上应用编辑时,我注意到一个奇怪的行为。文档 sais-i
将进行就地编辑。但是,符号链接已替换为文件。
重现步骤:
cd /tmp
echo blah > foo
ln -s foo bar
sed -i -e 's/ah/ub/' bar
ls -l
Run Code Online (Sandbox Code Playgroud)
将导致:
-rw-rw-r--. 1 arogge arogge 5 Mar 9 15:07 bar
-rw-rw-r--. 1 arogge arogge 5 Mar 9 15:07 foo
Run Code Online (Sandbox Code Playgroud)
这是预期的行为还是错误sed
?