디렉터리 만들기
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 휴지통으로 보내면 대화형 정리에서 되돌릴 여지를 남길 수 있어. 재생성 가능한 산출물과 원본 작업물을 같은 삭제 습관으로 다루지 마. 중요한 원본은 삭제 전에 별도 백업과 복원 시험까지 마쳐.