다음 명령을 순서대로 실행하면:
mkdir dir
ln -s dir link
rm -r link/
나는 다음과 같은 결과를 얻습니다.
rm: cannot remove `link': Not a directory
rm -r link
단순히 를 발행 하거나 더 나은 방법으로 을(를) 실행할 수 있기 때문에 경고를 받았습니다 rm link
. 어쨌든 명령은 작업을 수행했습니다(즉, "라는 이름의 파일을 제거했습니다.)협회").
마운트된 볼륨에서 이러한 작업을 수행할 때는 상황이 약간 다릅니다.목차"비슷한 것으로 대체"/미디어/mymovies이 경우 이전 예와 같이 심볼릭 링크뿐만 아니라 전체 볼륨이 지워집니다.
왜 그럴까요? 이것은 코드의 버그입니까 rm
, 아니면 예상된 것입니까? 왜 일관성이 없습니까?
고쳐 쓰다:이런 일이 생기면 현기증이 날지도 몰라요. 왜냐하면 지금 해보니까,"목차"내용이 삭제되지 않으면 삭제되지 않으며 두 경우 모두(마운트된 디렉터리와 로컬 디렉터리)입니다. 저는 Linux를 사용하고 있습니다.2.6.32, 내 생각엔2.6.37그 다음에.
답변1
내 시스템(Debian, Linux 2.6, rm --version
GNU coreutils 8.5 보고)에서 다음 중 하나를 수행합니다.목차마운트 지점입니다. 아래에서 삭제하세요.문서, 하지만목차또는협회, 표시되는 것과 동일한 오류가 발생합니다.
# mkdir dir && touch dir/file && ln -s dir link
# rm -r link/
rm: cannot remove `link': Not a directory
# ls
dir link
# ls -l dir
total 0
# mount .../scratch_filesystem dir
# touch dir/file
# rm -r link/
rm: cannot remove `link': Not a directory
# ls
dir link
# ls -l dir
total 0
내가 올바르게 들었다면 rm -r link/
명령이 삭제되지 않습니다문서, 하지 않는 한목차/마운트 지점입니다. 그렇다면 버그를 발견한 것 같습니다 rm
. 마운트 지점의 동작을 변경할 이유가 없습니다.
rm
어떤 버전을 사용하고 있는지 아는 것이 흥미로울 것입니다.