리눅스 rm, rm -r, rm -f 차이는 뭘까?
파일 시스템 다룰 때 많이 보는 rm, 특히 rm -r이나 rm -f 옵션은 그 차이를 모르면 큰일 납니다. rm 자체는 파일 지우는 기본 명령어인데, -r은 폴더와 그 속에 뭐가 있어도 싹 다 지워버리고, -f는 사용자 확인 없이 무조건 쾅 지워서 자칫 잘못 쓰면 돌이킬 수 없는 참사가 벌어질 수 있어요.
rm과 rm -r, rm -f, 그리고 rm -rf의 실체
살짝 헷갈릴 수 있는데, rm은 단순히 파일 하나 지우는 데 쓰입니다. 폴더 안의 내용까지 싹 다 지우려면 -r이 필수고요. 왜냐면 일반 rm은 폴더를 건드리지 못해요. 그리고 -f 옵션은 삭제할 때 사용자에게 “진짜로 지울 건가요?” 같은 질문도 생략하는 무지막지한 옵션입니다.
그럼 둘을 합친 rm -rf는 뭐냐면, 재귀적 삭제에 묻지 않고 강제 삭제까지 다 포함해서 한 번에 폴더랑 내용 전부 날려버립니다. 현업에서 편하지만, 실수하면 큰일이라 늘 긴장하면서 써야 하는 명령이에요.
그냥 콕 집어서 알려주자면
| 명령어 | 사용 목적 | 주의할 점 |
|---|---|---|
| rm | 파일 하나씩 삭제 | 폴더는 안 지워짐 |
| rm -r | 폴더 및 내부 내용 삭제 | 복수 폴더 지울 때 조심 |
| rm -f | 삭제 시 묻지 않고 강제 실행 | 실수 시 복구 불가 |
| rm -rf | 재귀 + 강제 한번에 | 와우, 진짜 조심해야 함 |
왜 rm -rf가 그렇게 무섭냐면
제가 알기로도, 이 명령은 작은 실수 한 번에 전체 프로젝트 파일, 심지어 루트 경로까지 삭제 가능성이 있어서 수습이 안 돼요. “./” 붙이는 걸 깜빡하거나 공백 하나 잘못 입력하면 아찔합니다. 덧붙여 와일드카드를 쓸 때도 극도로 신중해야 하죠. 예전 동료는 “rm -rf *”를 앞뒤 경로 확인 없이 썼다가 ‘저장소 날림’ 사건으로 한동안 골머리 앓았답니다.
자, 그럼 실수 방지하려면?
가장 간단하고 효과적인 건 alias rm="rm -i" 이렇게 명령어를 재정의해서 파일 삭제 전에 쓰윽 “정말 삭제할래?”라고 묻도록 하는 거예요. 이거 정말 꽤 도움이 많이 됩니다. 작업할 때도 긴장감이 조금은 생겨서 말이죠.
보통 ~/.bashrc나 ~/.zshrc에 넣어두고 터미널 재시작하면 적용돼요. 명령어 한 줄 추가하고 복잡한 명령 못지 않게 안전도를 훅 높일 수 있다는 사실!
근데 alias가 만능은 아니다
스크립트나 자동화할 때는 alias가 통하지 않는 경우가 많아서, 그 상황에선 다른 방법을 써야 해요. 예를 들어 삭제하기 전 대상 파일 목록 미리 출력해 확인하거나, 아예 복구 가능한 휴지통 타입 도구를 사용하는 게 현명합니다. 요즘은 safe-rm 같은 걸 달아서 시스템 기본 rm에 손대지 않고 안전장치를 거는 경우도 많아요.
내가 추천하는 업무 환경에서 삭제 안전하게 하는 팁
- 지우기 전 꼭 파일명, 경로나 디렉터리 위치 한번 더 확인하자.
- 와일드카드 사용할 땐 터미널 위치가 딱 맞는지 꼭 체크.
- 중요한 폴더는 직접 눈으로 ls 등으로 확인부터!
- 급하면 휴지통 기능 있는 도구 활용, 즉시 복귀 가능.
- 습관적으로
rm -rf쓰기보단 가끔은 확인 질문 띄우는 게 사고 줄여줘요.
사실 삭제 그 자체보다 더 중요한 건 ‘실수 방지 습관’입니다
아무리 편리한 명령어라도 한 번 실수하면 복구가 거의 불가능합니다. 저도 예전에 터미널 속도에 익숙해지면서 잘못 쳐서 고생한 적 있어요. 다행히 백업 덕분에 살긴 했지만, 그 뒤로는 무조건 두 번, 세 번 확인하는 버릇이 생겼습니다.
예컨대 경로를 지정할 때 절대경로나 상대경로를 헷갈리지 말고, 혹시 모를 상황에 대비해 따로 복사본을 만들어 놓는 것도 방법이죠. 그리고 자동화 스크립트를 짤 때는 삭제 대상 변수를 꼭 검증하는 코드도 넣는 게 좋습니다.
마지막으로, 정리하며
rm, rm -r, rm -f 각각의 쓰임과 리스크를 제대로 알고 쓰는 게 작업할 때 불안감도 훨씬 줄여줍니다. 간단하게 alias rm='rm -i' 같은 설정만 해 줘도 업무 효율과 안정성 모두 잡히니 꼭 활용해 보세요. 그리고 rm -rf는 멋 모르고 쓰면 안 되고, 항상 신중한 순간이 있음을 명심하시길!
리눅스 삭제 명령어 자주 하는 질문
rm이랑 rm -r 차이 뭐야?
rm은 파일, rm -r은 폴더 포함 지워요.
rm -f는 왜 위험하냐면?
삭제 확인 없이 강제로 바로 지웁니다.
alias rm=’rm -i’만 하면 돼?
일상에선 좋지만, 스크립트엔 무용지물이에요.