Linux 강좌 / 파일과 디렉터리 관리 - 생성·복사·이동·삭제
리눅스에서 파일과 디렉터리를 관리할 때는 mkdir로 디렉터리를 만들고, touch로 빈 파일을 준비하며, cp·mv로 복사하거나 옮깁니다. 삭제에는 rm과 rmdir를 사용합니다. 이 강좌에서는 홈 디렉터리 안에 별도 실습 공간을 만들고, 작업 전후의 상태를 확인하면서 이 명령들을 안전하게 연결해 봅니다.
실습 공간 준비하기
아래 실습은 Bash와 일반 사용자 계정에서 진행합니다. ~/linux-course-07-practice는 실습용으로 새로 만들 디렉터리입니다. 같은 이름의 디렉터리가 이미 있다면 기존 데이터를 건드리지 말고 다른 이름을 정하세요. 아래 mkdir 명령은 이미 존재할 때 오류를 내므로, 처음 실행할 때의 확인 장치가 됩니다.
mkdir ~/linux-course-07-practice
성공하면 보통 아무 메시지도 나오지 않습니다. ls -ld ~/linux-course-07-practice로 디렉터리가 만들어졌는지 확인하세요. 이후 명령은 첫 단계가 성공했고 해당 디렉터리가 비어 있다는 전제에서 실행합니다.
ls -ld ~/linux-course-07-practice
실습을 위한 두 하위 디렉터리를 만들고 그 안의 목록을 확인합니다.
mkdir ~/linux-course-07-practice/drafts ~/linux-course-07-practice/archive ls ~/linux-course-07-practice
이때 목록에는 archive와 drafts가 나타납니다. 더 깊은 경로를 한꺼번에 만들려면 mkdir -p가 유용하지만, 기존 디렉터리도 허용하므로 이번 실습에서는 사용하지 않습니다.
빈 파일 만들고 확인하기
touch에 없는 파일 이름을 주면 빈 파일이 만들어집니다. 이미 있는 파일에 실행하면 새로 만드는 대신 수정 시각 등을 갱신할 수 있으므로, ‘새 파일만 만드는 명령’이라고 생각하면 안 됩니다.
touch ~/linux-course-07-practice/drafts/notes.txt ls -l ~/linux-course-07-practice/drafts/notes.txt
방금 만든 파일이므로 ls -l에서 파일 크기는 일반적으로 0바이트로 표시됩니다. 권한과 날짜는 시스템 설정에 따라 달라집니다. touch는 파일에 내용을 쓰지 않으며, 파일 내용을 작성하려면 편집기나 다른 명령이 필요합니다.
복사와 이동의 차이 확인하기
cp는 원본을 남기고 새 사본을 만듭니다. 아래 명령은 drafts의 파일을 archive에 복사합니다. -i는 같은 이름의 대상이 이미 있을 때 덮어쓰기 전에 묻는 GNU cp 옵션입니다.
cp -i ~/linux-course-07-practice/drafts/notes.txt ~/linux-course-07-practice/archive/notes.txt ls -1 ~/linux-course-07-practice/drafts ls -1 ~/linux-course-07-practice/archive
위 두 ls -1 명령의 출력은 순서대로 다음과 같습니다. 각각 drafts와 archive에 notes.txt가 남아 있습니다. 파일 내용을 수정하면 두 파일이 자동으로 동기화되는 것은 아닙니다.
notes.txt notes.txt
mv는 파일을 다른 위치로 옮기거나 같은 디렉터리에서 이름을 바꿉니다. 아래 명령은 원본 파일의 이름을 notes-old.txt로 바꿉니다. 보관해 둔 사본의 이름은 그대로입니다.
mv -i ~/linux-course-07-practice/drafts/notes.txt ~/linux-course-07-practice/drafts/notes-old.txt ls -1 ~/linux-course-07-practice/drafts ls -1 ~/linux-course-07-practice/archive
이번에는 첫 줄이 drafts의 notes-old.txt, 둘째 줄이 archive의 notes.txt입니다. 즉 원본의 이름만 바뀌고 사본은 유지됩니다.
notes-old.txt notes.txt
cp나 mv의 마지막 인수가 기존 디렉터리이면 그 안에 같은 이름으로 들어가므로, 실행 전 대상이 파일인지 디렉터리인지 확인해야 합니다. -i를 사용하더라도 프롬프트를 무심코 승인하지 마세요.
파일과 빈 디렉터리 삭제하기
rm은 지정한 파일을 삭제합니다. 기본적으로 휴지통으로 보내지 않으므로 경로를 먼저 ls로 확인하세요. 아래 -i는 삭제 전에 확인을 요청합니다. 질문이 나오면 파일 이름을 확인하고 동의할 때만 진행하세요.
ls -l ~/linux-course-07-practice/drafts/notes-old.txt rm -i ~/linux-course-07-practice/drafts/notes-old.txt
삭제에 동의했다면 drafts는 비어 있습니다. 빈 디렉터리만 제거하는 rmdir로 실습해 보세요.
rmdir ~/linux-course-07-practice/drafts ls ~/linux-course-07-practice
마지막 목록에는 archive가 남습니다. archive에는 notes.txt가 있으므로 rmdir archive는 실패합니다. 실습 자료를 보존해 두었다가 필요 없을 때 정확한 경로를 확인하고 별도로 정리하세요. 초보 단계에서 rm -rf로 디렉터리 전체를 한 번에 지우는 방법은 권하지 않습니다.
작업 전에 확인할 것
- 현재 위치: 상대 경로를 사용할 때는
pwd로 기준 디렉터리를 확인합니다. - 대상:
ls -ld로 파일·디렉터리 자체와 이름을 확인합니다. - 덮어쓰기: 중요한 파일은 복사·이동 전에 백업하고, 목적지에 같은 이름이 있는지 확인합니다.
- 삭제:
rm은 기본적으로 복구 수단을 제공하지 않으므로 경로를 짧게 추측해 입력하지 않습니다.
명령별 다양한 옵션과 예외는 touch, mkdir, cp, mv, rm, rmdir 상세 글에서 확인할 수 있습니다.
공식 문서
각 명령의 정확한 동작과 옵션은 GNU Coreutils 공식 매뉴얼을 참고하세요. 설치된 구현의 옵션은 man이나 --help로 다시 확인하는 것이 좋습니다.









