Linux / 명령어 / rm - 파일과 디렉터리 삭제
rm은 파일이나 디렉터리를 파일 시스템에서 제거하는 명령입니다. 일반적인 데스크톱 휴지통을 거치지 않으며, 특히 -r과 -f를 함께 사용하면 대량의 데이터를 확인 없이 삭제할 수 있으므로 대상 경로 검증이 가장 중요합니다.
이 글에서는 기본 삭제, 빈 디렉터리와 재귀 삭제, 확인 옵션, 셸 글로브와 변수 사용 시 위험, 자동화에서 삭제 범위를 제한하는 방법을 설명합니다.
rm 명령어란?
rm은 지정한 디렉터리 엔트리를 제거합니다. 파일의 링크 수가 0이 되고 어떤 프로세스도 열고 있지 않으면 저장 공간이 나중에 재사용될 수 있습니다. 기본적으로 디렉터리는 삭제하지 않으며, 디렉터리 트리를 지우려면 재귀 옵션을 명시해야 합니다.
기본 문법
rm [옵션] 파일 ...
파일명이나 경로에 공백이 있으면 따옴표로 감싸고, 하이픈으로 시작하는 이름은 가능한 경우 -- 뒤에 지정합니다. 지원 옵션은 배포판과 GNU Coreutils 버전에 따라 다를 수 있으므로 rm --help와 man rm으로 현재 시스템의 설명을 확인하세요.
rm 기본 사용법
파일 하나 삭제하기
삭제할 정확한 경로를 지정합니다. 하이픈으로 시작하는 파일명은 -- 뒤에 둡니다.
rm old-report.txt rm -- -temporary.txt
여러 파일 삭제하기
여러 경로 또는 셸 글로브를 사용할 수 있지만, 실행 전에 확장 결과를 확인하는 것이 안전합니다.
printf '%s\n' *.tmp rm -- *.tmp
디렉터리 트리 삭제하기
-r은 하위 내용을 재귀적으로 제거합니다. 먼저 find나 ls로 대상을 확인하고 가능한 한 구체적인 경로를 사용하세요.
find build-cache -maxdepth 2 -print rm -r -- build-cache
삭제 명령이 조용히 끝났을 때
rm는 성공해도 대개 아무것도 출력하지 않습니다. 다음은 직접 만든 설명용 파일에만 적용하는 안전한 확인 예제입니다.
printf 'demo\n' > disposable-demo.txt rm -- disposable-demo.txt test ! -e disposable-demo.txt echo $?
예시 출력 0은 해당 경로가 더는 존재하지 않는다는 뜻입니다. 파일을 복구할 수 있다는 보장은 아니며, rm -r이나 rm -f를 실제 경로에 쓰기 전에는 삭제 대상을 목록으로 확인하세요.
주요 옵션
| 옵션 | 설명 |
|---|---|
-r, -R |
디렉터리와 하위 내용을 재귀적으로 삭제합니다. |
-i |
모든 삭제 전에 개별 확인을 요청합니다. |
-I |
많은 파일 또는 재귀 삭제에서 한 번 확인합니다. |
-f, --force |
없는 파일을 무시하고 일반적인 확인을 생략합니다. |
-d, --dir |
빈 디렉터리를 제거할 수 있게 합니다. |
-v |
제거한 항목을 출력합니다. |
--one-file-system |
재귀 삭제 중 다른 파일 시스템으로 내려가지 않습니다. |
--preserve-root[=all] |
루트 또는 추가 파일 시스템 루트를 재귀 삭제하는 실수를 방지합니다. |
긴 옵션은 의미를 파악하기 쉽고 스크립트 검토에도 도움이 됩니다. 다만 이식성이 중요한 스크립트에서는 대상 시스템이 해당 GNU 확장 옵션을 지원하는지 먼저 확인하세요.
실전 활용 예제
삭제 대상 미리 확인하기
셸이 *를 확장한 결과와 변수의 실제 값을 먼저 출력합니다. 줄바꿈·공백이 있는 파일명을 다룰 때는 find -print0와 호환 옵션을 검토하세요.
printf 'target=%s\n' "$target" find "$target" -maxdepth 2 -print
대화형 확인 사용하기
몇 개의 중요한 파일을 직접 지울 때는 -i, 많은 파일이나 재귀 작업에서 최소 한 번 확인하려면 -I가 유용합니다. 자동화에서는 대화형 옵션 대신 사전 조건을 코드로 검증해야 합니다.
rm -i important.conf rm -Ir old-release/
다른 마운트 지점 보존하기
백업이나 시스템 트리 안에 별도 파일 시스템이 마운트되어 있을 수 있습니다. 재귀 삭제가 그 경계를 넘지 않아야 한다면 --one-file-system을 검토하고 마운트 상태를 먼저 확인하세요.
findmnt --target /srv/chroot rm -r --one-file-system -- /srv/chroot
rm와 관련 명령 비교
| 명령·방법 | 주요 역할 | 적합한 상황 |
|---|---|---|
rm |
파일과 재귀 디렉터리 삭제 | 정확히 지정한 항목을 영구적으로 제거할 때 |
rmdir |
빈 디렉터리만 삭제 | 내용이 남으면 보존해야 할 때 |
| 데스크톱 휴지통 도구 | 복원 가능한 위치로 이동 | 대화형 환경에서 실수 복구가 필요할 때 |
shred |
파일 데이터 덮어쓰기 시도 | 지원 조건과 한계를 이해하고 흔적 감소가 필요할 때 |
사용할 때 주의할 점
rm -rf를 습관적으로 사용하지 않는다
-r은 범위를 넓히고 -f는 경고를 줄입니다. 필요한 옵션만 사용하고 변수로 만든 경로는 비어 있지 않은지, 예상 루트 아래인지 검증하세요.
별칭을 안전장치로만 믿지 않는다
alias rm='rm -i'는 비대화형 셸이나 다른 시스템에서 적용되지 않을 수 있습니다. 스크립트의 안전성은 별칭이 아니라 경로 검증과 권한 분리에 기반해야 합니다.
삭제 후 복구를 전제로 하지 않는다
삭제된 데이터는 파일 시스템과 저장 장치 상태에 따라 복구가 매우 어렵거나 불가능합니다. 중요한 데이터는 삭제 전에 별도의 검증된 백업이 있어야 합니다.
FAQ
rm으로 삭제하면 휴지통에 들어가나요?
일반적으로 아닙니다. 명령줄의 rm은 데스크톱 휴지통을 거치지 않으므로 즉시 복원할 수 있다고 가정하면 안 됩니다.
디렉터리를 삭제하려면 어떤 옵션이 필요한가요?
내용이 있는 디렉터리는 -r이 필요합니다. 빈 디렉터리라면 rmdir가 더 제한적이고 안전한 선택입니다.
rm -i와 rm -I의 차이는 무엇인가요?
-i는 항목마다 묻고, -I는 많은 파일이나 재귀 삭제에서 한 번 확인해 과도한 질문을 줄입니다.
실수로 삭제한 파일을 바로 복구할 수 있나요?
보장할 수 없습니다. 즉시 쓰기 작업을 줄이고 파일 시스템과 백업 정책에 맞는 복구 절차를 검토해야 합니다.









