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