리눅스 / 명령어 / mkdir / 디렉토리 만드는 명령어
Linux의 mkdir은 새 디렉터리를 만드는 명령입니다. 여러 단계의 경로를 한 번에 만들려면 -p를 사용하며, 이미 존재하는 디렉터리를 그대로 두고 누락된 상위 디렉터리를 함께 만들 수 있습니다.
디렉터리 만들고 확인하기
mkdir은 make directory의 줄임말입니다. 다음 명령은 현재 디렉터리에 projects가 없을 때 그 이름의 디렉터리를 만들고 결과를 확인합니다. 기존 데이터와 혼동하지 않도록 빈 실습 디렉터리에서 실행하세요.
pwd
mkdir projects
ls -ld projects
pwd로 현재 작업 위치를 먼저 확인하고, ls -ld에서 새 디렉터리의 정보가 표시되는지 확인합니다. mkdir은 성공하면 보통 아무 메시지도 출력하지 않습니다. 같은 이름의 파일이나 디렉터리가 이미 있으면 기본 명령은 오류를 표시합니다.
상대 경로는 현재 위치를 기준으로 하며, /home/user/projects처럼 /로 시작하는 절대 경로는 루트 디렉터리부터 지정합니다. 실제 경로와 접근 권한은 환경에 맞게 확인하세요.
상위 디렉터리까지 함께 만들기
다음 명령은 필요한 상위 디렉터리가 없다면 함께 만듭니다. 예를 들어 실습 위치에 work가 없다면 work, work/reports, work/reports/2024를 차례로 만듭니다.
mkdir -p work/reports/2024
ls -ld work work/reports work/reports/2024
-p 없이 mkdir work/reports/2024를 실행하면 상위 경로가 존재하지 않을 때 실패합니다. -p를 붙이면 해당 경로가 이미 디렉터리로 존재해도 그것만을 이유로 오류를 내지 않습니다. 기존 내용을 지우거나 기존 디렉터리 권한을 변경하지도 않습니다.
다만 경로 중간에 같은 이름의 일반 파일이 있거나 상위 디렉터리에 필요한 권한이 없으면 -p를 사용해도 실패할 수 있습니다. 성공 여부는 오류 메시지와 종료 상태, 실제 경로를 함께 확인하세요.
여러 디렉터리와 공백이 있는 이름
이름을 공백으로 구분해 나열하면 여러 디렉터리를 만들 수 있습니다. 다음은 현재 위치에 두 이름이 아직 없을 때의 예제입니다.
mkdir documents images
ls -ld documents images
이름 자체에 공백이 있으면 경로 전체를 따옴표로 감싸 하나의 이름으로 전달합니다. 따옴표가 없다면 셸은 공백으로 나누어 서로 다른 인수로 전달합니다.
mkdir "project files"
ls -ld "project files"
하이픈으로 시작하는 이름은 옵션으로 해석될 수 있습니다. mkdir -- -archive처럼 -- 뒤에 이름을 지정하면 이후 인수를 옵션으로 처리하지 않습니다.
생성 시 권한과 결과 확인
일반적으로 새 디렉터리의 기본 권한은 현재 셸의 umask와 파일 시스템 설정 등의 영향을 받습니다. 현재 마스크는 umask로 확인하고, 실제 만들어진 권한은 ls -ld로 확인하세요.
GNU mkdir의 -m 옵션으로 새로 만드는 디렉터리의 권한을 지정할 수도 있습니다. 다음은 private이 아직 존재하지 않을 때 소유자에게 읽기·쓰기·접근 권한을 주고 그룹과 다른 사용자에게는 권한을 주지 않는 예제입니다.
mkdir -m 700 private
ls -ld private
-p와 -m을 함께 써도 -m은 명령줄에서 지정한 새 디렉터리에 적용되며, 자동으로 만들어지는 상위 디렉터리에는 적용되지 않습니다. 이미 존재하는 디렉터리에도 새 권한을 적용하지 않습니다. 접근 제어 목록이나 파일 시스템 정책이 실제 접근에 영향을 줄 수 있으므로 필요한 환경에서 결과를 확인하세요. 옵션의 자세한 동작은 GNU mkdir 설명서를 참고하세요.
생성에 실패할 때
- 이미 존재함:
ls -ld 이름으로 기존 항목이 파일인지 디렉터리인지 확인합니다. 기존 디렉터리를 그대로 사용하려는 경우에만-p가 적합합니다. - 상위 경로를 찾지 못함: 경로의 철자와 현재 위치를 확인하고, 누락된 상위 디렉터리까지 만들어도 되는지 판단한 뒤
-p를 사용합니다. - 권한 거부: 상위 디렉터리에 필요한 쓰기·접근 권한이 있는지 확인하고 필요한 경우 관리자에게 요청합니다.
실습으로 만든 빈 디렉터리는 내용이 없는지 확인한 뒤 rmdir로 제거할 수 있습니다. rmdir은 비어 있지 않은 디렉터리를 일반적으로 제거하지 않습니다.




