하드 링크를 만들었습니다.
$ ln hours.sh hours_link
시험을 받다
$ ls -l hours*
-rw-r--r-- 2 me staff 653 Apr 12 2018 hours.sh
-rw-r--r-- 2 me staff 653 Apr 12 2018 hours_link
연결을 해제하여 제거하세요.
$ unlink hours_link
$ ls -l hours*
-rw-r--r-- 1 me staff 653 Apr 12 2018 hours.sh
지금까지는 괜찮았지만 unlink
링크가 아닌 원본 파일을 삭제할 수 있습니다.
$ cp hours.sh hours.bak.sh
$ unlink hours.sh
$ ls | grep hours.sh
#not return anything, hours.sh is deleted
설명서를 보고 정말 놀랐어요
unlink - call the unlink function to remove the specified file
rm - remove files or directories
이 전환을 당연하게 여기지 않고 어떻게 이해할 수 있습니까?
답변1
디렉토리의 각 항목은 파일에 대한 하드 링크입니다. 둘 다 하드 링크를 rm
제거합니다 . unlink
파일에 대한 모든 하드 링크가 제거되고 파일이 열려 있는 프로세스가 없는 경우에만 파일이 삭제됩니다.
따라서 원래 이름과 를 사용하여 만든 이름에는 차이가 없습니다 ln
.