리눅스 기본 명령어 중 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
리눅스 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
'IT > 리눅스 명령어' 카테고리의 다른 글
[Linux] 리눅스 echo 명령어, echo 옵션 및 사용법 (1) | 2022.04.06 |
---|---|
[Linux] 리눅스 rmdir 명령어, rmdir 옵션 및 사용법 (0) | 2022.04.04 |
[Linux] 리눅스 pwd 명령어, pwd 옵션 총정리 및 환경변수 (1) | 2022.03.31 |
리눅스 touch 명령어, touch 옵션 총정리 리눅스 파일 만들기 (1) | 2022.03.30 |
[Linux] 리눅스 ls 명령어, ls 옵션 종류 총정리 (5) | 2022.03.28 |
댓글