본문 바로가기
IT/리눅스 명령어

리눅스 mkdir 옵션 리눅스 디렉토리 만들기

by 꾸꾸웍스 2022. 3. 29.
반응형

리눅스 기본 명령어 중 mkdir 명령어는 리눅스 디렉토리(폴더) 만드는 명령어입니다. mkdir 명령어가 무엇인지 mkdir 옵션에 대한 설명과 mkdir 명령어 옵션에 대한 실제 예시와 mkdir 명령어를 잘못 실행했을 때 오류 메시지에 대해 알아보겠습니다.

 

반응형

 

mkdir 명령어란??

mkdir은 Make Directory의 줄임말로 리눅스에서 디렉토리를 생성할 때 사용하는 명령어입니다. 흔히 윈도우에서 폴더를 만든다는 개념이고 리눅스 디렉토리는 파일과 마찬가지로 디렉토리 명 앞에 . 을 붙여 디렉토리를 숨김 파일로 만들 수 있습니다. 또한 umask값을 수정을 하여 처음 생성한 디렉토리의 권한을 영구적으로 변경할 수 있습니다.

 

  ※ umask

  • 파일 및 디렉토리가 생성될 때 권한(퍼미션)이 결정되는 값입니다.
  • 계정마다 설정값을 변경할 수 있습니다.

 

mkdir 명령어 사용법

mkdir [옵션] [디렉토리 이름]

mkdir 명령어는 옵션 없이 사용할 수 있고 옵션을 여러 개 붙여서 사용할 수 있습니다. /home디렉토리 하위에 아무런 디렉토리나 파일이 없는 가정하에 /home 하위 apple 하위 banana 디렉토리를 만들고 만들 때마다 출력을 하고 싶다면 아래와 같은 방식으로 여러 개 옵션을 사용할 수 있습니다.

ex) $ mkdir -vp /home/apple/banana

 

mkdir 명령어 규칙 사항

기호 '/'은 구분자로 사용하기 때문에 파일 또는 디렉토리 이름에는 사용하지 않습니다. 아래 예시처럼 디렉토리 이름에 사용할 시 cannot create directory No such file or directory라는 오류 메시지가 출력됩니다.

### 잘못된 예
user@server # mkidr newdir/testfile
mkdir: cannot create directory 'newdir/testfile': No such file or directory
  • mkdir 명령어 사용 시 이름에는 알파벳, 숫자, 밑줄(_), 점(.)만 사용합니다.
  • mkdir 명령어 사용 시 이름에는 공백 또는 특수기호( < > * | " ' @ # $ % ^ & 등..)를 사용하지 않습니다.
    • 파일 및 디렉토리에 특수기호가 들어갔다면 파일을 액세스 할 때 따옴표로 묶어야 됩니다.
  • mkdir 명령어 사용 시 이름의 영문자에는 소문자와 대문자를 구별하여 서로 다른 파일 및 디렉토리로 취급합니다.
  • mkdir 명령어 사용 시 이름 앞에 '점(.)'을 사용하면 숨김 파일로 생성합니다.

 

mkdir 옵션 및 사용 예

mkdir 명령어 옵션 총정리

번호 옵션 long 옵션 설명
1 -m --mode=MODE 디렉토리 생성시 디렉토리 권한을 설정합니다. (default: 755)
2 -p --parents 지정한 디렉토리 경로가 존재 하지 않는다면 패턴에 맞게 디렉토리 생성합니다.
3 -v --verbose 각 디렉토리를 생성시 생성된 디렉토리에 대해 메세지 출력합니다.
4 -Z - 각 디렉토리를 생성시 SELinux security context로 설정합니다.
5 - --context[=CTX] CTX가 지정된 경우 SELinux 또는 SMACK security context를 CTX로 설정합니다.
6 - --help mkdir 명령어 사용법을 출력합니다.
7 - --version mkdir 명령어 버전 정보를 출력합니다.

mkdir 명령어 사용 예

mkdir 명령어는 옵션 없이 디렉토리 생성이 가능합니다

[ server 2022-03-29 17:00:09 ] ~
user@server # mkdir test

[ server 2022-03-29 17:00:11 ] ~
user@server # ls -l
drwxr-xr-x 2 user user 6 Mar 29 17:00 test

mkdir 명령어는 한 번에 여러 개의 디렉토리를 생성할 수 있습니다.

[ server 2022-03-29 17:01:09 ] ~/test
user@server # mkdir test1 test2 test3

[ server 2022-03-29 17:02:11 ] ~/test
user@server # ls -l 
drwxr-xr-x 2 user user 6 Mar 29 17:02 test1
drwxr-xr-x 2 user user 6 Mar 29 17:02 test2
drwxr-xr-x 2 user user 6 Mar 29 17:02 test3

[ server 2022-03-29 17:02:43 ] ~/test
user@server # tree
.
├── test1
├── test2
├── test3
└── test4

 

300x250

 

리눅스 mkdir 옵션 사용 예시

리눅스 mkdir -p 옵션 --parents 옵션

mkdir -p 옵션은 parents의 줄인 옵션으로 --parents를 사용해도 됩니다. -p 옵션은 지정한 상위 경로의 디렉토리 생성 시 -p 옵션을 사용합니다.

[ server 2022-03-29 17:04:31 ] ~/test
user@server # mkdir test1/test2/test3
mkdir: cannot create directory ‘test1/test2/test3’: No such file or directory

[ server 2022-03-29 17:04:09 ] ~/test
user@server # mkdir -p test1/test2/test3

[ server 2022-03-29 17:04:09 ] ~/test
user@server # tree
.
└── test1
    └── test2
        └── test3
            └── test4

리눅스 mkdir -v 옵션 --verbose 옵션

mkdir -v 옵션은 --verbose의 줄인 옵션으로 디렉토리 생성 시 메시지를 출력할 수 있습니다.

[ server 2022-03-29 17:25:11 ] ~/test/test1/test2/test3
user@server # mkdir -v test4
mkdir: created directory ‘test4’

[ server 2022-03-29 17:26:13 ] ~/test/test1/test2/test3
user@server # ls -l
drwxr-xr-x 2 user user 6 Mar 29 17:26 test4

리눅스 mkdir -m 옵션 --mode=MODE 옵션

mkdir -m 옵션을 사용하여 디렉토리의 권한을 설정할 수 있습니다.

### 8진수값(숫자)으로 권한 설정 
[ server 2022-03-29 17:38:09 ] ~/test
user@server # mkdir -m 666 all

[ server 2022-03-29 17:39:11 ] ~/test
user@server # ls -l
drw-rw-rw- 2 user user 6 Mar 29 17:38 all
drwxr-xr-x 2 user user 6 Mar 29 17:02 test1
drwxr-xr-x 2 user user 6 Mar 29 17:02 test2
drwxr-xr-x 2 user user 6 Mar 29 17:02 test3
drwxr-xr-x 2 user user 6 Mar 29 17:02 test4

### 파일 소유자그룹 권한으로 설정
[ server 2022-03-29 17:41:37 ] ~/test
user@server # mkdir -m g=rwx user

[ server 2022-03-29 17:41:54 ] ~/test
user@server # ls -l 
drw-rw-rw- 2 user user 6 Mar 29 17:38 all
drwxr-xr-x 2 user user 6 Mar 29 17:02 test1
drwxr-xr-x 2 user user 6 Mar 29 17:02 test2
drwxr-xr-x 2 user user 6 Mar 29 17:02 test3
drwxr-xr-x 2 user user 6 Mar 29 17:02 test4
drwxrwxr-x 2 user user 6 Mar 29 17:41 user

리눅스 mkdir --help 옵션

mkdir --help 옵션을 사용하여 mkdir 명령어 사용법을 출력합니다.

[ server 2022-03-29 17:48:52 ] ~/test
user@server # mkdir --help
Usage: mkdir [OPTION]... DIRECTORY...
Create the DIRECTORY(ies), if they do not already exist.

Mandatory arguments to long options are mandatory for short options too.
  -m, --mode=MODE   set file mode (as in chmod), not a=rwx - umask
  -p, --parents     no error if existing, make parent directories as needed
  -v, --verbose     print a message for each created directory
  -Z                   set SELinux security context of each created directory
                         to the default type
      --context[=CTX]  like -Z, or if CTX is specified then set the SELinux
                         or SMACK security context to CTX
      --help     display this help and exit
      --version  output version information and exit

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
For complete documentation, run: info coreutils 'mkdir invocation'

리눅스 mkdir --version 옵션

--version 옵션을 사용하여 mkdir 명령어 버전을 출력합니다.

[ server 2022-03-29 18:01:02 ] ~/test
user@server # mkdir --version
mkdir (GNU coreutils) 8.22
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

 

mkdir 명령어 오류

mkdir: cannot create directory

mkdir 명령어 사용 시 cannot create directory의 메시지가 출력되는 것은 디렉토리를 생성할 수 없다는 오류 메시지이고 뒤에 붙는 상세 내용에 대한 해답이 있습니다. 예를 들어 cannot create directory 'test': Permission denied이라고 출력이 되면 현재 접속한 서버의 계정으로 현재 있는 경로에 권한 문제로 일반 권한을 chmod 명령어로 변경하거나 계정을 바꾸는 것을 권장드립니다. 또한 cannot create directory 'test': File exists는 해당 경로 내에 동일한 파일 또는 디렉토리가 존재하여 생기는 오류로 해당 경로에 [ls | grep {만들 파일명}]을 입력하여 동일한 파일이 있다면 이름을 변경하여 디렉토리를 생성합니다.

No such file or directory

위 오류 메시지는 리눅스 상대 경로를 이용하여 실행파일을 실행했을 때 생기는 오류로 프롬프트에 현재 경로가 보이게 설정되어있지 않다면 pwd 명령어로 현재 경로를 확인하면서 파일을 실행합니다.

root@server # pwd
/root/testdir

root@server # ls -l
total 4
drwxr-xr-x 2 root root  6 Sep 13 17:48 apple
-rwxr-xr-x 1 root root 38 Sep 13 17:49 file.sh

root@server # ./file.sh
Hi my name is kim

root@server # cd apple/

root@server # ls -l
total 0

root@server # ./file.sh
-bash: ./file.sh: No such file or directory

 

 

반응형
그리드형

댓글