对软链文件进行 sed 操作的一个坑

TL; DR:对软链进行 sed 请使用

sed -i --follow-symlinks

 ,否则软链会变成常规文件。


本来我已经很久不拿这种非常零散的点水一篇文章了但是由于这个坑我觉得无比愚蠢我决定上来吐槽一下

你们 Debian 特色的 nginx 配置文件分为 sites-available 和 sites-enabled,某次我对着 sites-enabled 来了一次

sed -i

 之后又愉快的改 sites-available 配置文件然而 reload 谜之不生效,然后就发现软链都变常规文件了。

原因大致是 sed 会在内存里完成替换然后整个往文件里写进去,这个操作会改变文件的 inode 号,也默认没有判断软链。

RIP 纪念我被愚蠢的自己坑掉的一个小时。

EOF.


本文链接: https://www.starduster.me/2018/04/08/attention-when-sed-a-symlink/
本站基于 CC BY-NC-SA 4.0 协议,允许并欢迎您:自由地对本文进行复制、分享或基于本文进行创作
但您需同意并遵守:对本文署名并标记来源、使用相同方式共享、不将其用于商业用途
更严谨和完整的声明请参见关于本站内容许可

2条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据