리눅스 명령어 – mkdir
mkdir
은 가장 자주 쓰이는 명령어이자 반드시 알아야하는 명령어 중의 하나입니다.
mkdir
은 make directory의 약자이며 원하는 이름으로 디렉토리를 생성하게 해주는 명령어입니다. 주로 유닉스/리눅스 셸 명령어로 사용되지만 윈도우 명령 프롬프트에서도 해당 명령어로 폴더를 만들 수 있습니다. (물론 윈도우에서는 옵션 등의 사용법이 다릅니다.)
사용 방법
사용법은 아주 간단합니다. mkdir
뒤에 디렉토리 이름을 인자값으로 붙이면 현재 디렉토리 위치에 새로운 디렉토리를 생성합니다.
$ mkdir newFolder
디렉토리가 생성되었는지 확인하기위해 ls -al
(현재 위치의 전체 파일을 자세히 출력)명령어를 사용해보겠습니다.
$ ls -al total 4 drwxrwxr-x. 3 user user 23 Jan 30 18:25 . drwx--x--x. 25 user user 4096 Jan 30 18:25 .. drwxrwxr-x. 2 user user 6 Jan 30 18:25 newFolder
newFolder
가 생성된 것을 확인할 수 있습니다. 여기서 첫번째 열은 파일 형식 및 권한 정보를 보여주는 것인데, 여기서 d
로 표시되는 것들은 모두 디렉토리임을 뜻합니다. (처음의 현재 경로인 ‘.
‘ 과 상위 경로인 ‘..
‘ 역시 d
로 나타납니다.) 아래 표를 참고해보세요.
문자 | 파일 타입 | 설명 |
---|---|---|
- | 일반 파일 | 일반적인 파일을 나타내는 문자 |
d | 디렉토리 | 디렉토리를 나타내는 문자 |
l | 심볼릭 링크 | 심볼릭 링크 (Soft Link) 파일 |
c | 문자 장치 드라이버 | 문자 장치 드라이버 (Character Device Driver). 물리적 장치를 위한 실행 파일 |
b | 블록 장치 드라이버 | 블록 장치 드라이버 (Block Device Driver). 물리적 장치를 위한 실행 파일 |
s | 로컬 소켓 | 프로세스 통신을 위해 사용되는 파일. |
p | 네임드 파이프 (Named Pipe) | 프로세스 통신을 위해 사용되는 파일. 선입선출 (FIFO) 파일이라고도 함 |
참고로 rm
명령어로 파일을 삭제할 때 디렉토리의 경우에는 경고를 표시합니다. 이 때 다음 예시처럼 rm
에 -r
옵션을 붙여야합니다.
$ mkdir newFolder $ rm newFolder/ rm: cannot remove ‘newFolder/’: Is a directory $ rm -r newFolder/ $ ls -al total 4 drwxrwxr-x. 2 user user 6 Jan 30 19:13 . drwx--x--x. 25 user user 4096 Jan 30 19:07 ..
다음으로 여러 디렉토리를 한 번에 생성해보겠습니다. 역시나 간단합니다. 여러 디렉토리 이름을 공백으로 구분하여 인자값으로 지정하면 한 번에 지정한 디렉토리를 모두 생성할 것입니다.
$ mkdir red green blue black white $ ls -al total 4 drwxrwxr-x. 7 user user 68 Jan 30 19:16 . drwx--x--x. 25 user user 4096 Jan 30 19:07 .. drwxrwxr-x. 2 user user 6 Jan 30 19:16 black drwxrwxr-x. 2 user user 6 Jan 30 19:16 blue drwxrwxr-x. 2 user user 6 Jan 30 19:16 green drwxrwxr-x. 2 user user 6 Jan 30 19:16 red drwxrwxr-x. 2 user user 6 Jan 30 19:16 white
만약 모든 디렉토리 생성 과정을 메세지로 출력받고 싶다면 아래와 같이 -v
(verbose)옵션을 붙이면 됩니다.
$ mkdir -v AA BB CC mkdir: created directory ‘AA’ mkdir: created directory ‘BB’ mkdir: created directory ‘CC’
이번에는 여러 단계의 디렉토리를 한 번에 생성하고 싶은 경우가 있습니다.
예를 들어 /home/myuser
경로 안에 하위 디렉토리인 A, A 디렉토리 내에 B, B 디렉토리 내에 C와 같이 구성(/home/myuser/A/B/C
)하려 할 때, A 디렉토리를 만들고 cd
명령어로 A 디렉토리에 이동해서 B 디렉토리를 만드는 등의 과정을 굳이 하지 않아도 됩니다. A/B/C
폴더를 한 번에 생성하려고 할 때에는 mkdir
에 -p
(parents) 옵션을 붙여 사용하면 됩니다.
$ mkdir -p /home/user/A/B/C
이 때 /home/user
디렉토리는 이미 존재하므로 이를 무시한 채 존재하지 않는 A, B, C 폴더만 각각 생성할 것입니다.
마지막으로 디렉토리를 생성할 때 미리 권한을 부여하고 싶은 경우 -m
(mode) 옵션을 붙여 umask를 지정하면 됩니다. 여기서 rwx
와 같은 형식을 사용해서는 안되고 755
, 600
과 같은 8진법 숫자를 사용해야 합니다.
다음은 Scripts
디렉토리를 소유자에게만 모든 권한(rwx)을 주도록 하는 예시입니다.
$ mkdir -m 700 Scripts/ $ ls -al total 4 drwxrwxr-x. 3 user user 27 Jan 30 19:30 . drwx--x--x. 26 user user 4096 Jan 30 19:22 .. drwx------. 2 user user 6 Jan 30 19:30 Scripts