mkdir 명령어 사용법

새 디렉터리를 만드는 명령어입니다.

파일·디렉터리 관리연결 실습 문제 5개Rocky Linux 8 기준 · 실행 결과는 실습 컨테이너에서 확인

기본 문법

mkdir [옵션] 디렉터리...

mkdir(make directory)는 새 디렉터리를 만드는 명령어입니다. 인자로 준 이름의 디렉터리를 현재 위치나 지정한 경로에 생성하며, 같은 이름의 파일이나 디렉터리가 이미 있으면 오류를 냅니다. 파일을 정리할 공간을 준비하거나 서비스가 사용할 경로를 만들 때 사용합니다.

실무에서 자주 쓰이는 옵션은 -p입니다. /srv/share나 /var/www/html/app처럼 중간 경로가 아직 없는 깊은 경로를 한 번에 만들 수 있고, 대상이 이미 있어도 오류 없이 넘어가므로 설치·배포 스크립트에 사용됩니다. 권한이 중요한 경로는 -m으로 생성 시점에 권한을 지정해 umask의 영향을 받지 않게 할 수 있습니다.

리눅스마스터·RHCSA·LPIC 시험에서는 mkdir 단독 문제보다 웹 서버 문서 루트 준비, NFS 공유 디렉터리 생성, /etc/skel 템플릿 구성 같은 작업의 첫 단계로 등장하는 경우가 많습니다. 디렉터리 구조를 먼저 만들고 파일 생성·권한 설정으로 이어지는 형태의 실습 문제로도 자주 쓰입니다.

자주 쓰는 옵션

옵션의미
-p, --parents필요한 상위 디렉터리를 함께 만들고, 대상이 이미 있어도 오류를 내지 않음mkdir -p /srv/share/data
-m 모드, --mode=모드생성할 디렉터리의 권한을 chmod 형식으로 지정(umask의 영향을 받지 않음)mkdir -m 700 /root/backup
-v, --verbose생성한 디렉터리를 한 줄씩 출력mkdir -v /tmp/work
-Z생성한 디렉터리의 SELinux 보안 컨텍스트를 기본 타입으로 설정(SELinux가 활성화된 시스템에서만 의미가 있음)mkdir -Z /var/www/html/app
--context[=컨텍스트]-Z와 같으며, 컨텍스트를 지정하면 해당 SELinux 컨텍스트로 생성mkdir --context=system_u:object_r:httpd_sys_content_t:s0 /var/www/html/app
--help사용법 요약 출력mkdir --help
--versioncoreutils 버전 출력mkdir --version

실무 예시

디렉터리 한 개 만들기

준비: rm -rf /tmp/demo; mkdir /tmp/demo

$ mkdir /tmp/demo/workspace && ls -l /tmp/demo
total 0
drwxr-xr-x. 2 root root 6 Sep 16 10:52 workspace

지정한 위치에 디렉터리가 만들어지고, ls -l 결과의 맨 앞 d로 디렉터리임을 확인할 수 있습니다. 날짜와 'total' 표기는 로캘 설정에 따라 한국어로 나올 수 있습니다.

중간 경로까지 한 번에 만들기 (-p)

준비: rm -rf /tmp/demo; mkdir /tmp/demo

$ mkdir -p /tmp/demo/home/exercise/workspace && find /tmp/demo -type d
/tmp/demo
/tmp/demo/home
/tmp/demo/home/exercise
/tmp/demo/home/exercise/workspace

상위 디렉터리가 없어도 -p가 경로 전체를 만듭니다. find로 생성된 계층을 확인합니다.

프로젝트 구조를 한 줄로 만들기

준비: rm -rf /tmp/demo; mkdir -p /tmp/demo/project

$ mkdir -p /tmp/demo/project/{docs,src,logs} && ls /tmp/demo/project
docs
logs
src

bash의 중괄호 확장으로 여러 디렉터리를 한 번에 만듭니다. 중괄호 확장은 mkdir이 아니라 셸의 기능이므로 dash 등 POSIX 셸에서는 동작하지 않습니다.

권한을 지정해 만들기 (-m)

준비: rm -rf /tmp/demo; mkdir /tmp/demo

$ mkdir -m 700 /tmp/demo/private && ls -ld /tmp/demo/private
drwx------. 2 root root 6 Sep 16 10:52 /tmp/demo/private

umask와 무관하게 생성 시점에 700 권한이 적용됩니다. 소유자만 접근해야 하는 경로에 사용합니다.

skel 템플릿 사본에 www 디렉터리 추가

준비: rm -rf /tmp/demo; mkdir -p /tmp/demo; cp -a /etc/skel /tmp/demo/skel

$ mkdir -pv /tmp/demo/skel/www && ls -a /tmp/demo/skel
mkdir: created directory '/tmp/demo/skel/www'
.
..
.bash_logout
.bash_profile
.bashrc
www

/etc/skel을 복사한 사본에 www를 추가하는 연습입니다. -v로 실제 생성된 경로를 확인할 수 있습니다. 이 사본은 useradd가 참조하지 않으므로, 새 사용자 홈에 반영하려면 /etc/skel 자체를 수정해야 하며 그 경우 기존 사용자에게는 소급 적용되지 않습니다. ls 출력이 파이프나 파일로 갈 때는 한 줄에 하나씩 표시됩니다.

주의할 점

  • -p 없이 깊은 경로를 만들면 중간 경로가 없어 'No such file or directory' 오류가 납니다.
  • 이미 있는 디렉터리를 만들면 'File exists' 오류가 납니다. 스크립트에서는 -p로 넘어가게 합니다.
  • -m은 명령에 지정한 마지막 디렉터리에만 적용됩니다. -p로 함께 만들어진 상위 디렉터리는 umask 기준 권한을 갖습니다.
  • 이름에 공백이 있으면 따옴표로 감싸야 합니다. 그렇지 않으면 여러 디렉터리가 만들어집니다.
  • 중괄호 확장 {a,b,c}에 공백을 넣으면 하나의 목록으로 인식되지 않아 의도와 다른 결과가 나옵니다.
  • -Z나 --context는 SELinux가 비활성화된 시스템에서는 효과가 없습니다.
  • 예시의 setup에 있는 rm -rf는 /tmp/demo 아래 실습용 경로만 지우도록 되어 있습니다. 경로를 바꿔 실행할 때는 삭제 대상을 먼저 확인하세요.
  • 공유 디렉터리라도 777 권한은 권장하지 않습니다. 소유자·그룹과 setgid(2775 등)로 접근 범위를 제한하는 편이 안전합니다.

이 명령어로 풀 수 있는 실습 문제

브라우저 웹 터미널에서 바로 풀고 요구사항별로 자동 채점됩니다. 로그인 없이 5분 체험도 가능합니다.

관련 명령어

마지막 검수 2026-09-16 · 내용에 오류가 있으면 문제 페이지의 질문 기능으로 알려 주세요.