bash: ~/Desktop $ mkdir DIR
bash: ~/Desktop $ cd DIR
bash: ~/Desktop/DIR $ echo 000_111 > fileA
bash: ~/Desktop/DIR $ ln fileA fileB
bash: ~/Desktop/DIR $ cat fileA fileB
000_111
000_111
bash: ~/Desktop/DIR $ ls -i
6298182 fileA 6298182 fileB
bash: ~/Desktop/DIR $ ls -il
total 8
6298182 -rw-r--r-- 2 da7id da7id 8 ott 19 16:58 fileA
6298182 -rw-r--r-- 2 da7id da7id 8 ott 19 16:58 fileB
bash: ~/Desktop/DIR $ mv fileB /$HOME/Desktop/fileB
bash: ~/Desktop/DIR $ ls -il
total 4
6298182 -rw-r--r-- 2 da7id da7id 8 ott 19 16:58 fileA
bash: ~/Desktop/DIR $ ls -il '/home/da7id/Desktop/fileB'
6298182 -rw-r--r-- 2 da7id da7id 8 ott 19 16:58 /home/da7id/Desktop/fileB
fileA
fileB
即使我fileB
从移动/$HOME/Desktop/DIR/fileB
到 ,仍然具有相同的 inode/$HOME/Desktop/fileB
在这种情况下,硬链接的确切行为是什么?
答案1
您的fileA
和fileB
只是指向同一个 inode 的两个目录条目,因此指向同一个文件。重命名文件或将其移动到同一文件系统中不会更改此关系。
一个文件可以有任意数量的名称,但只能有一个 inode 号,并且同一文件系统中的其他文件不能有相同的 inode 号。
特殊情况:一个文件零只有当它保持开放时,名称才会存在。