Linux 硬链接混乱

Linux 硬链接混乱

我对 Linux 硬链接感到困惑,

我在我的 Ubuntu 机器上用这个命令创建了一个硬链接,

ln f1 f2

因此 f2 应该是 f1 的硬链接,但为什么我用 emacs 更改了 f2 并保存了 f2,而 f1 根本没有变化。我的理解是 f1 应该具有我对 f2 所做的任何更改。

答案1

我做了一些测试,弄清楚了发生了什么。首先,命令 ls -li 在第一列中显示 inode 编号,指向同一文件的两个硬链接将具有相同的 inode 编号:

$ echo hi > f1
$ ln f1 f2
$ ls -li
total 8
1646595 -rw-r--r-- 2 randy randy 3 2011-06-18 06:50 f1
1646595 -rw-r--r-- 2 randy randy 3 2011-06-18 06:50 f2

文件 f1 和 f2 的 inode 号均为 1646595,它们是指向相同数据的硬链接。我使用 emacs 编辑 f1 并保存:

$ ls -li
total 12
1646597 -rw-r--r-- 1 randy randy 9 2011-06-18 06:51 f1
1646595 -rw-r--r-- 2 randy randy 3 2011-06-18 06:50 f1~
1646595 -rw-r--r-- 2 randy randy 3 2011-06-18 06:50 f2

现在,f1~和 f2 具有相同的 inode 编号,并且 f1 具有一个新的 inode 编号。

当您保存时,emacs 所做的就是将 f1 重命名为 f1~,并创建一个新文件 f1。f1~ 仍然硬链接到 f2,而 f1 作为一个新文件未链接到其他任何地方。

我不知道 emacs 中是否有设置可以改变这种行为。

相关内容