sed 原地替换和符号连接的一个小坑
原文中文,约2600字,阅读约需7分钟。
📝
内容提要
本文介绍了使用 sed 命令替换符号连接时的问题及解决方法,使用 --follow-symlinks 选项可以直接替换符号连接指向的目标文件。通过使用 strace 命令追踪 sed 命令的执行过程,可以验证这一点。
🎯
关键要点
-
使用 sed 命令替换符号连接时,可能会将符号连接变为常规文件。
-
实验中,使用 sed -i"" 's/foo/bar/g' 对符号连接进行替换,导致 link-1 变为常规文件。
-
sed 不能同时打开文件进行读写,避免文件被清空,因此需要使用临时文件进行处理。
-
可以使用 strace 命令验证 sed 的执行过程,发现 sed 会打开临时文件进行读-处理-写。
-
使用 --follow-symlinks 选项可以在处理时跟随符号连接,避免改变文件性质。
🏷️