UNIX 系 OS でよく使われる sed。基本的で普段から多用するこのコマンドで、上書きオプションの "-i" をハードリンク・ファイルに対して使用すると、リンクが切れてしまうことが判明して驚いた。Linux を使うようになってもう長いが、個人的にハードリンクをあまり使わないので、今まで全く気付かなかったようだ (苦笑)。

どうも sed の "-i" オプション付加時の挙動は、通常のエディターのように開いたファイルをそのまま閉じるのではなく、オリジナルのコピーを作成して編集後にリネームしている模様。従って "sed -i" 実行後に残っているファイルは、オリジナルと同名でも参照する inode が異なる別ファイルなので、「ハードリンクなんて知らねーよ」 と言うわけだ。要注意。

しかしよく考えてみれば、cp や rsync 等の上書きでも同じことか・・・。

Comments are closed.