명령어

리눅스 mkdir 명령어 – 손쉬운 디렉토리 생성 방법

리눅스 명령어 – mkdir


mkdir은 가장 자주 쓰이는 명령어이자 반드시 알아야하는 명령어 중의 하나입니다.

mkdirmake 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
JooTC

안녕하세요. 테크놀로지에 관심이 많은 블로거입니다.

Recent Posts

[iOS] Xcode ‘You do not have required contracts to perform an operation’ 해결

Xcode에서 iOS 애플리케이션을 빌드(Archive)하고 App Store Connect에 앱을 업로드하는 도중, 아래와 같은 에러가 발생하면서 더…

2주 ago

[안드로이드] INSTALL_FAILED_INSUFFICIENT_STORAGE 해결

INSTALL_FAILED_INSUFFICIENT_STORAGE 문제 안드로이드 스튜디오에서 에뮬레이터를 실행하고 개발중인 애플리케이션을 실행하려 하면 로그 창에 아래와 같이 표시되면서…

6개월 ago

Zalgo 텍스트와 이를 방지하는 방법

인터넷 커뮤니티 사이트에서 게시글이나 댓글에 간혹 장난을 목적으로 작성된 특이한 글자를 볼 수 있습니다. 위…

8개월 ago

리눅스 kill, killall 명령어 – 특정 프로세스 종료하기

리눅스 명령어 - kill, killall 리눅스 kill 명령어는 특정 프로세스를 종료해주는 명령어입니다. 백그라운드에서 실행되고 있는…

8개월 ago

JavaScript typeof null이 ‘object’인 이유

JavaScript는 역사가 긴 스크립트 프로그래밍 언어입니다. 세월이 흐르면서 많은 자바스크립트 표준이 만들어졌고, 현재는 많은 문법적…

8개월 ago

Mocha Error: Resolution method is overspecified. 해결 방법

NodeJS 테스트 프레임워크인 Mocha는 비동기 테스트를 지원합니다. 간혹 특정 테스트 스크립트를 작성하고 실행하면 아래와 같이…

8개월 ago