하드 링크를 올바르게 취소하십시오.

하드 링크를 올바르게 취소하십시오.

이런 스크립트가 있어요

ln /myfile /dev/${uniquename}/myfile

/dev/somename/myfile링크 수를 줄이기 위해 링크를 제거하고 싶습니다 .

어떻게 해야 하나요?

답변1

요약하자면... rm필요하지 않은 파일 이름( 을 사용하여)을 제거하세요.

위의 명령이 수행하는 작업인 하드 링크를 생성하면 동일한 저장 영역을 가리키는 두 개의 이름이 생성됩니다. 다른 이름이나 저장 공간에 영향을 주지 않고 이름 중 하나를 삭제할 수 있습니다. 저장 영역은 성이 삭제된 경우에만 해제됩니다.

- 를 사용하여 생성된 소프트 링크 와 비교해 보면 ln -s링크는 저장소에 대한 포인터가 아니라 원래 이름에 대한 포인터라는 점에서 다릅니다. 원본 이름의 파일을 삭제하면 소프트 링크가 삭제된 콘텐츠를 가리키므로 링크는 여전히 존재하지만 끊어집니다.

답변2

하드링크를 삭제하는 명령어는 입니다 rm.

~에서매뉴얼 페이지을 위한 rm:

Remove (unlink) the FILE(s).

답변3

무슨 뜻인지 잘 모르겠지만 스크립트가 /myfile하드 링크를 생성 /dev/…/myfile한 다음 후자를 삭제하려는 것 같습니다.

이것이 맞다면 링크를 연결한 다음 링크를 제거하는 대신 파일을 직접 이동하여 두 명령(ln 및 rm) 대신 단일 명령(mv)으로 동일한 결과를 생성할 수 있습니다.

mv   /dev/…/myfile   /

답변4

대부분의 기존 답변은 rm파일을 삭제하지 않기 때문에 완전히 정확합니다. 링크를 삭제하고 파일에 대한 마지막 링크가 삭제되고 마지막으로 열린 파일 설명자가 닫히면 파일도 삭제됩니다. ).

그러나 알아야 할 또 다른 유틸리티인 가 있습니다 unlink. 이 유틸리티에는 옵션이 없으며 rm항상 암시적인 -f옵션이 있습니다(일종이지만 파일이 누락되면 실패합니다). 좋은 점은 적어도 이론적으로는 대시로 시작하는 파일을 삭제할 수 있다는 것입니다.

unlink...Linux 시스템을 사용하지 않는 한 GNU가 명령줄 옵션 지원을 추가하여 유틸리티를 무력화시키기 때문에 이 작업을 수행할 수 없습니다 ! 따라서 Linux 시스템이나 GNU coreutils를 사용하는 다른 시스템에서 이름이 지정된 파일은 unlink -t삭제되지 않습니다 .-t

(예, 저는 이것이 효과가 있다는 rm -- -t것을 알고 있습니다 unlink -- -t. 이에 대해 언급할 필요가 없습니다.)

관련 정보