对软链文件进行 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.

2条评论

发表评论

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.