본문 바로가기
C.W.K.
Stream
Lesson 07 of 12 · published

mkdir, rmdir, rm: 만들고 지우기

~12 min · mkdir, rmdir, rm, trash

Level 0창 구경꾼
0 XP0/95 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete

디렉터리 만들기

mkdir foo는 디렉터리 하나를 만들어. mkdir -p a/b/c는 중간 디렉터리까지 한 번에 만들고 이미 존재해도 오류를 내지 않아 반복 실행하는 스크립트에 알맞아. mkdir -m 700 secret은 디렉터리를 만들면서 초기 권한도 함께 정해.

비어 있을 때만 지우기

rmdir foo는 빈 디렉터리만 삭제하고 내용이 남아 있으면 거부해. 재귀 삭제가 필요하지 않은 작업에서는 이 제한이 유용한 안전망이야.

영구 삭제하기

  • rm file은 파일 하나를 휴지통 없이 삭제하므로 기본적으로 되돌릴 수 없어.
  • rm -i file은 각 파일을 지우기 전에 확인을 요청해.
  • rm -r dir/은 디렉터리 아래의 모든 항목을 재귀적으로 지워.
  • rm -f file은 대상이 없어도 오류를 내지 않고 확인 질문도 생략해.
  • rm -rf dir/은 확인 없이 트리 전체를 지울 수 있으므로 대상을 먼저 검증해야 해.

위험한 확장을 먼저 막아

rm -rf $VAR/*처럼 인용하지 않은 변수가 bash에서 비어 있으면 $VAR/*/*로 확장되어 명령이 rm -rf /*가 될 수 있어. 변수에 공백이 있어도 예상과 다른 여러 경로로 갈라질 수 있어. 변수가 비어 있지 않은지, 해석된 경로가 허용한 루트 안에 있는지 확인하고 --로 옵션 해석을 끝낸 뒤 정확한 대상만 넘겨.

삭제 명령은 대상을 먼저 증명해

재귀 삭제 전에는 현재 디렉터리, 확장된 대상과 심볼릭 링크 여부를 출력해. 같은 조건을 읽기 전용 명령으로 먼저 실행하고, 항목 수와 최상위 경로가 예상과 맞을 때에만 삭제 단계로 넘어가. 심볼릭 링크가 가리키는 대상과 링크 자체를 구분하고, 경로에 줄바꿈이나 대시로 시작하는 이름이 있을 때 인자 경계도 확인해.

복구 가능한 정리와 구분해

rm으로 지운 파일은 백업이 없으면 복구하기 어려워. macOS에서는 brew install trash로 설치한 trash 명령을 사용해 GUI 휴지통으로 보내면 대화형 정리에서 되돌릴 여지를 남길 수 있어. 재생성 가능한 산출물과 원본 작업물을 같은 삭제 습관으로 다루지 마. 중요한 원본은 삭제 전에 별도 백업과 복원 시험까지 마쳐.

Code

깊이 생성 / 삭제·bash
mkdir -p ~/work/2026/may/notes
ls ~/work/2026/may/
rmdir ~/work/2026/may/notes      # 비어 있을 때만 삭제
rm -r ~/work                     # work 아래를 모두 삭제
trash로 안전하게·bash
brew install trash
trash ~/Downloads/old.pdf        # macOS 휴지통으로 이동
# Finder에서 복구하거나 나중에 휴지통 비우기

External links

Exercise

mkdir -p ~/sandbox/a/b/c로 시험 트리를 만들고 tree ~/sandbox로 구조를 확인해. rmdir ~/sandbox/a/b/c가 빈 말단만 지우는지 본 다음, 남은 시험 트리의 정확한 경로를 다시 확인하고 정리해. trash를 설치했다면 복구 가능한 휴지통 이동과 영구 삭제의 차이도 비교해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.