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 번호를 가질 수 없습니다.
특별한 경우: 파일영이름은 열려 있는 동안에만 존재합니다.