연결 해제는 연결되지 않은 파일을 제거합니다.

연결 해제는 연결되지 않은 파일을 제거합니다.

하드 링크를 만들었습니다.

$ 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.

관련 정보