我对 Linux 硬链接感到困惑,
我在我的 Ubuntu 机器上用这个命令创建了一个硬链接,
ln f1 f2
Run Code Online (Sandbox Code Playgroud)
所以f2应该是f1的硬链接,但是为什么我用emacs改了f2并保存了f2,f1根本没变。我的理解是 f1 应该有我对 f2 所做的任何更改。
我做了一些测试并弄清楚发生了什么。首先,命令 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
Run Code Online (Sandbox Code Playgroud)
文件 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
Run Code Online (Sandbox Code Playgroud)
现在,f1~和f2 具有相同的inode 编号,f1 具有新的inode 编号。
保存时emacs所做的将f1重命名为f1~并创建了一个新文件f1。f1~ 仍然硬链接到 f2,而 f1 作为一个新文件没有链接到其他任何地方。
我不知道 emacs 中是否有更改此行为的设置。
归档时间: |
|
查看次数: |
284 次 |
最近记录: |