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を指す2つのディレクトリエントリなので、同じファイルを指します。ファイル名を変更したり、ファイルを同じファイルシステムに移動しても、この関係は変わりません。
ファイル名は複数ありますが、inode 番号は 1 つしか持たず、同じファイルシステム上の他のファイルは同じ inode 番号を持つことはできません。
特別な場合:ファイル若い名前は開いている間だけ存在します。