rm -rf
배포는 사용자가 실수로 전체 시스템을 삭제할 수 있기 때문에 위험하다는 말을 여러 번 들었습니다 . 하지만 때로는 매번 묻지 않고 디렉터리를 재귀적으로 삭제하고 싶을 때가 있습니다. yes | rm -r
대안을 사용하는 것을 고려하고 있습니다 .
내 생각엔, yes | rm -r
그게 더 안전할까 rm -rf
? 아니면 본질적으로 동일합니까?
답변1
짧은 답변
아니요. 하지만 명령을 조합하는 데 있어 창의력이 정말 마음에 듭니다. 그럼에도 불구하고 yes|rm -r
이는 UUOC(너사심 없는너셀렌오에프씨at) - 단순히 사용자 편의 기능을 제공하는 명령줄 구조의 약어(또는 더 나은 용어)입니다.
긴 대답
귀하의 질문은 다양한 차원에서 답변될 수 있기 때문에 정말 마음에 듭니다.
기술적 차원
이 rm
명령은 파일을 삭제하는 데 사용됩니다. 이 옵션 -r
또는 더 긴 형식은 --recursive
파일(디렉터리 포함)을 반복적으로 삭제하는 데 사용됩니다. -f
(long:) 옵션은 --force
존재하지 않는 파일과 매개변수를 무시하고 확인 메시지를 표시하지 않는 데 사용됩니다. 자세한 내용은 아래 링크된 매뉴얼 페이지를 참조하세요.
따라서 디렉토리를 재귀적으로 삭제하려면 이것이 rm -rf
올바른 방법입니다.
언어 차원
배포가 위험하다는 말을 여러 번 들었는데 rm -rf
, 맞습니다. 누락된 부분은 아무도 이런 일이 발생하는 이유를 알려주지 않는다는 것입니다.
원래 질문에 이미 답변을 제공하셨습니다.명령 자체는 위험하지 않습니다. 사용자가 뭔가를 잘못 입력하면 애초에 삭제해서는 안 되는 삭제된 파일이나 디렉터리에 직면하게 됩니다.
따라서 귀하가 듣는 경고의 의미는 다음과 같습니다.입력한 내용을 정말로 삭제하고 싶다면 Enter 버튼을 누르기 전에 다시 한 번 생각해 보시기 바랍니다.
귀하의 질문은 그것이 의미하는 바를 완전히 이해하지 못한다는 것을 의미하지만, 귀하가 이해하는 것은 "명령 자체가 위험하므로 파일과 디렉터리를 삭제하는 다른 방법을 찾아야 합니다"입니다.
물론 목표를 달성하는 방법은 항상 여러 가지가 있으므로 Unix 명령을 사용하여 이 작업을 수행할 수 있습니다. 그러나 여러분이 듣는 경고는 실제 반성을 위한 것이므로 (창의적인) 파이프라인 구성은 yes|rm -r
생각하는 데 도움이 되지 않습니다.
그렇기 때문에 더 위험하지 않습니다 rm -rf
.
역사적 차원
모든 Unix 명령은 다음 진언을 사용하여 작성됩니다.하나일하고 일을 완벽하게 수행하십시오.”
그러나 이는 운영 체제에 익숙한 사람들에게는 혼란스러울 수 있습니다. 예를 들어, Windows에서는 작업을 시작한 후 사용자에게 "정말로 이 일을 하고 싶었나요, 저런 일을 하고 싶었나요?"라고 묻는 것이 여전히 일반적입니다.
Unix 명령을 사용하는 경우 명시적으로 확인을 요청하지 않는 한 이는 그렇지 않습니다. 이 rm
명령도 예외는 아니며 -i
다음과 같은 매개변수를 알고 있습니다 --interactive
.
문제는 사용하기 쉬운 운영체제로 우분투가 부상하면서 새로운 리눅스 사용자가 급증했던 2004년쯤부터 시작됐다. 그들 모두는 Linux가 내부적으로 어떻게 작동하는지에 대해 거의 알지 못합니다. 그들 중 다수는 잘못된 입력으로 인해 많은 시스템이 삭제되는 실수를 저질렀습니다 rm -rf /
. 슬픈 순간들...
당시의 실수는 Windows처럼 이러한 사용자를 "보호"하려는 것이었습니다. 따라서 Ubuntu와 같은 배포자는 rm
명령을 자동 rm -i
으로 .
그럼에도 불구하고 중요한 점은 일부 배포판에서는 여전히 그러한 별칭 정의를 사용하므로 많은 사람들이 대화형 쿼리가 rm
이 명령의 기본값이라고 가정한다는 것입니다. 그러나 이는 사실이 아니다.
인용하다
답변2
첫째, 다른 사람들이 이미 말했듯이 yes | rm -r
매우 유사하지만 완전히 동일하지는 않습니다 rm -rf
. 차이점은 이 -f
옵션은 rm
다양한 오류를 지나 계속 진행하도록 지시한다는 것입니다. 즉, 계속해서 가능한 모든 항목을 계속 삭제하는 yes | rm -r
대신 첫 번째 오류가 발생하면 종료 됩니다. rm -rf
이는 다음을 yes | rm
의미합니다.약간위험도는 낮지 rm -f
만 그렇게 위험하지는 않습니다.
그렇다면 위험을 줄이기 위해 어떤 조치를 취합니까 rm
?
다음은 앨리어싱을 크게 줄일 수 있는 몇 가지 습관입니다 rm
. 이 답변은 앨리어스가 없다고 가정합니다 rm
. rm -i
이는 제 생각에는 나쁜 습관입니다.
대화형 루트 셸을 사용하지 마세요.. 이는 즉시 최악의 시나리오를 훨씬 더 어렵게 만듭니다 rm -rf /
. 대신 항상 를 사용하십시오 sudo
. 이는 입력 중인 명령을 자세히 살펴보기 위한 시각적 단서가 될 것입니다. 루트 셸을 시작해야 하는 경우 필요한 작업을 수행하고 종료하십시오. 어떤 문제로 인해 대부분의 경우 루트가 되어야 한다면 이를 해결하십시오.
절대 경로에 주의하세요.로 시작하는 경로를 입력하는 경우 /
중지하십시오. 절대 경로를 피하고 대신 삭제하려는 디렉토리로 이동하여 계속하기 전에 올바른 위치에 있는지 확인 ls
하고 사용하는 것이 더 안전합니다.pwd
명령을 내리기 전에 잠시 멈춥니다 rm
.rm
나는 명령(및 기타 잠재적으로 위험한 명령)을 입력한 후에는 항상 키보드에서 손가락을 떼고 , 입력한 내용을 매우 주의 깊게 확인한 다음 손가락을 키보드에 다시 놓고 Return 키를 누르는 방법을 스스로 훈련했습니다 .
요청한 작업을 echo rm ...
보는 데 사용됩니다 .rm
나는 종종 rm
주요 명령을 실행하기 위해 2단계 프로세스를 거칩니다. 먼저 입력합니다.
$ echo rm -rf ...
이는 모든 쉘 전역(예: *
모드 등) 을 확장하고보여줘rm
명령있을 것이다처형되었다. 이것이 좋아 보이면 다시 한 번 확인한 후 ^P
(control-P)를 입력하여 이전 입력 줄을 복원하고 삭제한 echo
다음 명령 줄을 다시 확인한 다음 아무것도 변경하지 않고 Enter 키를 누릅니다.
백업을 유지하십시오.위의 작업을 대부분 수행한 경우 전체 시스템을 복원해야 할 가능성은 매우 낮지만 실수로 파일을 삭제하고 어딘가에서 쉽게 다시 가져올 수 있습니다.
답변3
잘못된 디렉터리 이름을 입력하면 rm -r dir
잘못된 디렉터리도 삭제되며 해당 디렉터리에 있는 파일 중 하나에 쓰기 권한이 없으면 문제가 발생하지 않습니다. (단, 이전 콘텐츠는 모두 삭제됩니다.)
rm -rf dir
와 의 차이점은 답변 에서 모든 프롬프트로 파이프하면서 시작 부분의 프롬프트를 덮어쓴다는 yes | rm -r dir
것입니다 . 이는 삭제 확인으로 간주될 수 있으나 로케일( )의 영향을 받아야 하므로 일부 로케일에서는 확인이 되지 않을 수 있습니다 . (저는 Debian의 핀란드어 로케일에서 테스트했는데 영어와 핀란드어 모두 에서 확인되었습니다 .)-f
yes
y
LC_MESSAGES
y
y
k
결국 어떤 것을 사용하는지는 중요하지 않습니다. 이 중 하나를 사용하면 별도의 확인을 받지 않으며, 잘못된 파일을 삭제한 경우 백업에서 복원할 수 있다는 의미입니다.
나는 이것이 단지 특정 명령줄이거나 일반적인 명령줄이라고 생각하지 않습니다 rm
. GUI 기반 파일 관리자에서는 잘못된 파일이나 디렉터리에 대해 "삭제"를 클릭하는 것도 전적으로 가능합니다.
파일 이름을 현명하게 지정하고, 백업을 유지하고, 파일을 삭제하기 전에 다시 한 번 생각해 보세요.
rm
그래도 이 작업을 수행해야 하는 경우 삭제를 진행하기 전에 영향을 받는 파일 수를 계산하고 나열하는 함수로 래핑할 수 있습니다 . 그러나 그렇게 하는 것은 또 다른 문제이다.
답변4
아니요 yes | rm -r
예아니요보다 안전합니다 rm -rf
.
존재하다모두그것의 치수.
파일을 지우기 위해 Unix에서 제공하는 주요 명령은 입니다 rm
. unlink와 같이 파일을 삭제할 수도 있는 다른 명령도 있습니다. 하지만 unlink
오직하나파일을 제출할 수 없으며풀리다디렉터리(Linux).
그래서 rm
주요 도구입니다. 그리고 유닉스 정신으로 한 가지만 잘하면 rm
많은 파일을 삭제할 수 있다. 마찰이있다어떤 파일. 따라서 rm
(두 가지 명령줄 예제를 의미합니다) 시스템의 관점에서 볼 때(두 경우 모두) 완벽하게 안전한 명령입니다.
그러나 이것은 또한위험한많은 힘을 가지고 있기 때문에 사용하는 명령입니다.
큰 힘에는 큰 책임이 따른다.
이것은아니요rm -i
파일을 삭제하거나 별칭( ) 을 사용하는 것을 덜 열망하도록 컴퓨터에서 이러한 명령을 제한하는 것이 좋습니다.위험이있을 수 있습니다. 이런 짓을 하기 때문에너습관에는 또 다른 수준의 보호, 즉 도우미가 있습니다. 이것은 합리적인 일처럼 들릴 수도 있습니다. 하지만 생각해 보세요. 다른 컴퓨터로 SSH를 통해 연결하거나 친구의 컴퓨터에 앉아 도움을 청할 수 있습니다. 여기에는 추가 장벽이 없으며 중요한 일이 발생하지 않도록 명령을 실행하지만 실제로는 발생합니다.
내 지혜의 말(내 개인적인 의견)은 다음과 같습니다.
- 이러한 위험에 익숙해지고 rm 명령을 사용할 때마다 조심하면 장기적으로 더 나은 서비스를 받을 수 있습니다.