对软链文件进行 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/
本站基于 Creactive Commons BY-NC-SA 4.0 License 允许并欢迎您在注明来源和非商业使用前提下自由地对本文进行复制、分享或基于本文进行创作。
请注意:受限于笔者水平,本站内容可能存在主观臆断或事实错误,文中信息也可能因时间推移而不再准确,在此提醒读者结合自身判断谨慎地采纳。

2条评论

发表评论

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

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