
..
디렉토리에서 삭제 하려고 하면 왜 오류가 발생합니까 ?
rm: refusing to remove '.' or '..' directory: skipping '..'
내가 왜 이 일을 하는지 묻기 전에: 단지 왜냐하면.
답변1
그건및 의 내용 rm
도 재귀적으로 제거되는 일부 셸(POSIX 셸 포함)의 버그 기능을 해결하기 위해 대부분의 구현에 보호 장치를 추가했습니다.rm -rf .*
.
..
(이것은 Forsyth 쉘 및 pdksh와 같은 파생물에 의해 수정되었으며 zsh
최소 fish
1입니다.)
(이 버그 기능이 없는 쉘의) 내장 기능을 사용할 수 있습니다 rm
.zsh
zmodload zsh/files # to load and enable the builtin version of rm
# and a few other utilities
rm -rf ..
또는 BSD, GNU find
또는 호환을 사용하여 다음을 수행할 수 있습니다.
find .. -delete
명확하게 말하면 상위 디렉터리(현재 작업 디렉터리 포함)의 내용을 (재귀적으로) 삭제합니다.
현재 디렉터리(일반적으로 최신 시스템)에서 항목의 링크를 해제하려는 경우에는 ..
불가능합니다. 해당 항목을 포함하는 디렉터리가 존재하는 한 존재하며 삭제할 수 없습니다 .
. ..
일부 파일 시스템에서는 가상(디렉토리 파일의 물리적 항목이 아님)이기도 합니다.
이를 삭제하더라도(예: debugfs
디렉토리 내용을 수동으로 편집하여) 다음에 파일 시스템 검사가 완료되면 다시 생성되며( fsck
) 일부 응용 프로그램(예: cd
POSIX 셸 내장)은 이를 완전히 무시합니다. (현재 디렉토리에 관계없이 현재(cd ..
저장된 현재 작업 디렉토리의 끝에서 경로 구성 요소를 제거합니다.) POSIX에서는$PWD
..
..
동dir/../whatever
) 디렉토리와 같은 경로 의 경우 .
1 버전 5.2에는 이 문제를 해결하기 위한 bash
옵션이 추가되었습니다 globskipdots
.
답변2
당신이 원하는 명령은 다음과 같습니다: 숨김 파일에도 작동하는 rm -rf *
것 같나요 ? rm -rf .*
확실하지 않다.
하지만 이 프로그램을 실행하려는 현재 디렉터리에 있는지 확인하세요. 즉, 입력 pwd
하거나 echo $PWD
확인하려면...
예, 현재 디렉터리의 모든 파일이 삭제됩니다.
rm -rf ../*
또한 테스트를 해봤기 때문에 작동할 것이라고 확신합니다 . 필요한 만큼 상위 디렉터리("../")를 추가할 수 있습니다.
따라서 기본적으로 어리석은 보안을 우회하려면 끝에 "splat"을 추가하면 됩니다.