your programing

디렉토리에 대한 심볼릭 링크 제거

lovepro 2020. 9. 27. 13:31
반응형

디렉토리에 대한 심볼릭 링크 제거


중요한 디렉토리에 대한 심볼릭 링크가 있습니다. 나는 그 심볼릭 링크를 제거하고 그 뒤에 디렉토리를 유지하고 싶습니다.

나는 시도 rm하고 돌아왔다 rm: cannot remove 'foo'.
나는 시도 rmdir하고 돌아왔다 rmdir: failed to remove 'foo': Directory not empty
나는 다음을 통해 진행 rm -f, rm -rf그리고sudo rm -rf

그런 다음 백업을 찾으러 갔다.

목욕물로 아기를 버리지 않고 심볼릭 링크를 제거하는 방법이 있습니까?


# this works
rm foo
# versus
rm foo/

기본적으로 디렉토리를 삭제하는 것이 아니라 파일을 삭제하도록 지시해야합니다. 나는 C 라이브러리가 각각을 처리하는 방식의 차이 때문에 rm사이의 차이가 있다고 생각합니다 rmdir.

어쨌든 첫 번째는 작동해야하고 두 번째는 foo가 디렉토리라는 것에 대해 불평해야합니다.

위와 같이 작동하지 않으면 권한을 확인하십시오. 파일을 제거하려면 포함하는 디렉토리에 대한 쓰기 권한이 필요합니다.


확인 "연결 해제"명령을 사용하게 하지 끝에 /를 가지고

$ unlink mySymLink

unlink ()는 파일 시스템에서 이름을 삭제합니다. 해당 이름이 파일에 대한 마지막 링크이고 파일이 열려있는 프로세스가없는 경우 파일이 삭제되고 사용하던 공간을 재사용 할 수 있습니다. 이름이 파일에 대한 마지막 링크 였지만 모든 프로세스에 파일이 열려 있으면 파일을 참조하는 마지막 파일 설명자가 닫힐 때까지 파일이 존재합니다.

올바르게 읽는다면 이것이 문제가 될 수 있다고 생각합니다.

이름이 심볼릭 링크를 참조하면 링크가 제거됩니다.

이름이 소켓, fifo 또는 장치를 참조하는 경우 해당 이름은 제거되지만 개체가 열려있는 프로세스는 계속 사용할 수 있습니다.

https://linux.die.net/man/2/unlink


rm은 심볼릭 링크를 제거해야합니다.

skrall@skrall-desktop:~$ mkdir bar
skrall@skrall-desktop:~$ ln -s bar foo
skrall@skrall-desktop:~$ ls -l foo
lrwxrwxrwx 1 skrall skrall 3 2008-10-16 16:22 foo -> bar
skrall@skrall-desktop:~$ rm foo
skrall@skrall-desktop:~$ ls -l foo
ls: cannot access foo: No such file or directory
skrall@skrall-desktop:~$ ls -l bar
total 0
skrall@skrall-desktop:~$ 

사용 rm symlinkname하되 끝에 슬래시를 포함하지 마십시오 ( 사용 하지 마십시오 :) rm symlinkname/. 그런 다음 y예라고 대답 하기 위해 심볼릭 링크를 제거할지 묻는 메시지가 표시됩니다 .


실제로 심볼릭 링크라고 가정하면

$ rm -d symlink

그것을 알아 내야하지만 더 이상 존재하지 않지만 여기서 옳은 일을하는 또 다른 케이스를 위해 의도 된 잠재 코드를 활성화 할 수 없기 때문입니다.


rm이 심볼릭 링크를 제거 할 수없는 경우 심볼릭 링크를 포함하는 디렉토리에 대한 권한을 확인해야합니다. 디렉토리 항목을 제거하려면 포함하는 디렉토리에 대한 쓰기 권한이 필요합니다.


설정이 다음과 같다고 가정하면 문제없이 ln -s /mnt/bar ~/foo를 수행 할 수 rm foo있습니다. 할 수없는 경우 foo해당 파일 의 소유자이고 파일 쓰기 / 실행 권한 이 있는지 확인하십시오 . 재귀 적으로 수행하지 않는 한 제거 foo는을 터치 bar하지 않습니다 .


CentOS에서 실행 rm linkname하면 "기호 링크를 제거 하시겠습니까?"라는 메시지가 표시됩니다. Y및을 입력 Enter하면 링크가 사라지고 디렉토리가 안전합니다.


Windows Server에서 실행되는 MinGW (실제로 Git Bash)에이 문제가 발생했습니다. 위의 제안 중 어느 것도 작동하지 않는 것 같습니다. 결국 Windows 탐색기에서 소프트 링크를 삭제 한 다음 휴지통의 항목을 삭제 한 경우를 대비하여 디렉터리의 복사본을 만들었습니다. 파일을 삭제하는 것처럼 소음이 들었지만 그렇지 않았습니다. 그래도 백업하십시오!

참고 URL : https://stackoverflow.com/questions/210120/remove-a-symlink-to-a-directory

반응형