gui@Latitude:~$ cd playground
gui@Latitude:~/playground$ ls -l
total 8
drwxrwxr-x 2 gut gut 4096 set 20 16:18 dir1
-rw-r--r-- 1 gut gut 2903 set 20 14:46 gato
gui@Latitude:~/playground $ ln gato gato-rato
gui@Latitude:~/playground $ ls -l
total 12
drwxrwxr-x 2 gui gui 4096 set 20 16:18 dir1
-rw-r--r-- 2 gui gui 2903 set 20 14:46 gato
-rw-r--r-- 2 gui gui 2903 set 20 14:46 gato-rato
gui@Latitude:~/playground $
명확히 도와주세요.
drwxrwxr-x 2 gut gut 4096 set 20 16:18 dir1
답변1
내 생각엔 네 생각이 좀 틀린 것 같아. gato와 gato-rato는 서로 다른(그러나 연결된) 파일이 아니라 두 개의 이름입니다.같은 파일에 대해. 이러한 이름(더 기술적으로는 디렉터리 항목)이 계산되는 "링크"입니다.
ls -li
기본적으로 볼륨의 파일 ID 번호인 inode 번호를 살펴보는 것이 도움이 될 수 있습니다 . 내 시스템의 재미는 다음과 같습니다.
Gordons-MBP:playground gordon$ ls -li
total 8
12931424970 drwxr-xr-x 2 gordon staff 64 Sep 20 21:38 dir1
12931424987 -rw-r--r-- 1 gordon staff 7 Sep 20 21:39 gato
Gordons-MBP:playground gordon$ ln gato gato-rato
Gordons-MBP:playground gordon$ ls -li
total 16
12931424970 drwxr-xr-x 2 gordon staff 64 Sep 20 21:38 dir1
12931424987 -rw-r--r-- 2 gordon staff 7 Sep 20 21:39 gato
12931424987 -rw-r--r-- 2 gordon staff 7 Sep 20 21:39 gato-rato
"gato" 및 "gato-rato" 디렉터리 항목이 모두 inode #12931424987에 연결되어 있음을 확인할 수 있습니다. 이 inode에는 두 개의 디렉터리 항목이 연결되어 있으므로 링크 수는 2입니다.
마찬가지로 하위 디렉터리에 대한 두 번째 링크도 있습니다.
Gordons-MBP:playground gordon$ ls -lid dir1 dir1/.
12931424970 drwxr-xr-x 2 gordon staff 64 Sep 20 21:38 dir1
12931424970 drwxr-xr-x 2 gordon staff 64 Sep 20 21:38 dir1/.
따라서 현재 디렉토리의 "dir1" 항목과 디렉토리 자체의 "." 항목은 inode #12931424970에 대한 두 개의 링크입니다.
답변2
비유를 해보자.
여러 장으로 구성된 책을 생각해 보세요. 내 책의 알파벳순 색인에 "삶은 계란" 장에 대한 항목이 있습니다. 나는 이 색인에 항목을 작성할 때마다 해당 장의 상단에 항목 수를 알려주는 메모를 작성합니다. 이제 "Cooking" 아래의 "C" 아래뿐만 아니라 "Eggs" 아래의 "E" 아래에서도 장을 찾을 수 있도록 "계란, 요리"라는 색인에 또 다른 항목을 추가하기로 결정했습니다. 아래 장을 찾으세요. 또한 색인에 이제 두 개의 항목이 있음을 상기시키기 위해 이 장 상단의 참고 사항을 업데이트했습니다.
아직은 장이 하나밖에 없지만 색인에는 항목이 두 개 있습니다. 색인의 항목은 더 정확하거나 정확하지 않습니다. 둘 다 동일하게 유효합니다.
echo 'Recipe for cooking an egg' >'Cooking an egg'
ln 'Cooking an egg' 'Egg, cooking'
ls -lid Cooking*
파일에 대한 두 개의 링크가 있음을 알려주는 이 항목이 표시됩니다. 이 명령은 또한 우리 책의 페이지 번호일 수 있는 inode 번호를 제공합니다.
ls -lid Egg*
여기서는 동일한 파일(책의 동일한 장)에 대한 또 다른 참조이기 때문에 동일한 정보를 얻을 수 있습니다. 또한 파일에 두 개의 링크가 있음을 알려줍니다. 비유에서 색인 항목의 수는 장과 함께 저장된다는 점을 기억하십시오. 여기서도 마찬가지입니다. 링크 수는 파일 이름이 아닌 파일과 함께 저장됩니다.
중요한 점은 파일 이름 중 하나를 삭제할 수 있으며 파일은 계속 존재한다는 것입니다. 비유하자면 이는 색인에서 항목을 제거하는 것과 같습니다. 장은 색인의 항목 수가 0에 도달할 때까지 남아 있습니다. 그런 다음 해당 장은 삭제됩니다.