맨위로가기

Mkdir

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

mkdir은 디렉토리를 생성하는 데 사용되는 명령어이다. 초기 유닉스 시스템에서는 커널에 mkdir 시스템 호출이 없어 mknod 명령어를 통해 디렉토리를 생성했으며, MS-DOS 버전 2 이상에서도 사용할 수 있게 되었다. GNU coreutils에 포함된 버전은 데이비드 매켄지가 작성했으며, DOSBox 및 KolibriOS에서도 사용 가능하다. mkdir 명령어는 디렉토리 이름을 인자로 받아 현재 디렉토리에 새로운 디렉토리를 생성하며, --parents (-p), --mode (-m), -v (--verbose) 등의 옵션을 지원한다. POSIX 표준에 따라 시스템 호출로 구현되어 있으며, MSVC++에서는 _mkdir() 함수로 유사하게 제공된다.

더 읽어볼만한 페이지

  • 내부 도스 명령어 - TYPE (도스 명령어)
    TYPE은 텍스트 파일의 내용을 화면에 표시하는 기능을 수행하는 명령어이며, MS-DOS, 윈도우 등 다양한 운영 체제에서 지원된다.
  • 내부 도스 명령어 - Echo (명령어)
    echo 명령어는 다양한 운영체제 및 셸 환경에서 입력받은 문자열을 그대로 출력하는 명령어로, POSIX 표준의 부재로 시스템에 따라 동작 방식에 차이가 있어 이식성이 떨어진다는 평가를 받는다.
  • OS/2 명령어 - 파일 전송 프로토콜
    파일 전송 프로토콜(FTP)은 클라이언트-서버 모델 기반으로 네트워크를 통해 파일을 전송하는 표준 통신 규약이며, 명령 연결과 데이터 연결을 사용하고, 보안 취약점 때문에 암호화된 방식 사용이 권장된다.
  • OS/2 명령어 - CHKDSK
    CHKDSK는 디스크의 파일 시스템 무결성을 검사하고 오류를 수정하는 시스템 도구로, 다양한 운영체제에서 구현되었으며 파일 시스템 오류 수정 및 손상된 파일 조각 복구 기능을 제공하지만 데이터 손상이나 시스템 불안정을 야기할 수 있다는 비판도 있다.
  • 윈도우 명령어 - 파워셸
    파워셸은 마이크로소프트에서 개발한 작업 자동화 솔루션으로, 명령줄 셸과 스크립트 언어의 기능을 결합하여 윈도우 시스템 관리를 위해 설계되었으며, .NET 프레임워크 기반의 객체 지향적 특징을 갖고 다양한 플랫폼에서 자동화 스크립트 작성 및 실행, 시스템 구성 관리 등에 활용된다.
  • 윈도우 명령어 - 클립보드
    클립보드는 텍스트 조각을 임시 저장하는 버퍼로, 잘라내기, 복사, 붙여넣기 기능을 구현하며, 다양한 데이터 형식을 지원하고 애플리케이션 간 데이터 교환에 사용되며 보안 취약점의 대상이 될 수 있다.
Mkdir - [IT 관련 정보]에 관한 문서
일반 정보
명령어 종류명령어
설명디렉터리 생성 명령어
개발자
개발자 목록다양한 오픈 소스 개발자
상업 개발자
출시 정보
운영 체제유닉스
유닉스 계열
플랜 9
인페르노
도스
MSX-DOS
FlexOS
OS/2
마이크로소프트 윈도우
ReactOS
KolibriOS
플랫폼크로스 플랫폼
라이선스
라이선스 정보GNU coreutils: GPLv3+
MS-DOS, Plan 9: MIT
FreeDOS: GPLv2+
ReactOS: GPLv2

2. 역사

초기 유닉스(4.1BSD, 초기 시스템 V)에서는 커널에 ''mkdir()'' 시스템 호출이 없었기 때문에, 이 명령어는 setuid 루트 권한이 필요했다. 대신 mknod 시스템 호출을 사용하여 디렉터리를 생성하고, '.'와 '..' 디렉터리 항목을 수동으로 연결해야 했다.

이 명령어는 MS-DOS 버전 2 이상에서 사용할 수 있게 되었다.[10] 디지털 리서치의 DR DOS 6.0[11]데이터라이트의 ROM-DOS[12] 역시 ''md'' 및 ''mkdir'' 명령어 구현을 포함한다.

GNU coreutils에 포함된 ''mkdir'' 버전은 데이비드 매켄지(David MacKenzie)가 작성했다.[13] 또한 오픈 소스 MS-DOS 에뮬레이터인 DOSBox와 KolibriOS에서도 이 명령어를 사용할 수 있다.[14]

3. 사용법

ReactOSmkdir 명령어


mkdir 명령어의 가장 기본적인 사용법은 다음과 같다.



mkdir 디렉터리_이름



위 명령어에서 `디렉터리_이름`은 새로 만들고자 하는 디렉터리의 이름을 의미한다. 이렇게 명령어를 입력하면, 현재 작업 중인 디렉터리 안에 지정한 이름의 새 디렉터리가 생성된다.

유닉스 계열 운영체제나 윈도우(명령 확장 기능이 활성화된 경우[15] 기본값[16])에서는 한 번에 여러 개의 디렉터리 이름을 지정하여 동시에 생성할 수도 있다. 예를 들어 `mkdir 디렉터리1 디렉터리2`와 같이 입력하면 현재 위치에 '디렉터리1'과 '디렉터리2'가 모두 만들어진다.

3. 1. 옵션

유닉스 계열 운영 체제에서 `mkdir` 명령어는 다양한 옵션을 제공하며, 이를 통해 디렉터리 생성 과정을 제어할 수 있다. 주요 옵션은 다음과 같다.

  • `''-p''` (`''--parents''`): 지정한 디렉터리의 경로에 포함된 상위 디렉터리가 존재하지 않을 경우, 해당 상위 디렉터리까지 자동으로 생성한다. 경로명에 이미 존재하는 디렉터리가 포함되어 있어도 오류가 발생하지 않는다. 복잡한 디렉터리 구조를 만들 때 유용하다.
  • `''-m''` (`''--mode''`): 새로 생성하는 디렉터리의 파일 권한을 8진수 형식으로 직접 지정한다. 셸 스크립트 등에서 임시 디렉터리의 접근 권한을 설정할 때 주로 사용된다.
  • `''-v''` (`''--verbose''`): 디렉터리가 성공적으로 생성되었을 경우, 생성된 디렉터리의 이름을 화면에 출력한다. 주로 `''-p''` 옵션과 함께 사용하여 생성 과정을 확인할 때 사용된다.

3. 1. 1. -p (--parents)

`-p` 옵션은 `--parents` 옵션과 동일하며, 지정된 디렉터리를 생성할 때 필요한 상위 디렉터리가 존재하지 않으면 자동으로 함께 생성한다. 예를 들어, `''mkdir -p a/b''` 명령어는 현재 디렉터리에 'a' 디렉터리가 없을 경우 'a'를 먼저 만들고, 그 다음 'a' 디렉터리 내부에 'b' 디렉터리를 생성한다.

이 옵션의 중요한 특징 중 하나는 생성하려는 디렉터리 경로의 일부 또는 전체가 이미 존재하더라도 오류를 발생시키지 않는다는 점이다. 따라서 `-p` 옵션은 여러 단계로 이루어진 복잡한 디렉터리 구조를 한 번에 만들 때 매우 유용하게 사용된다. 각 단계별 디렉터리 존재 여부를 미리 확인할 필요 없이 명령어를 실행할 수 있어 편리하다.

3. 1. 2. -m (--mode)

'--mode' 또는 '-m' 옵션은 'mkdir' 명령어로 디렉토리를 생성할 때 파일 권한을 8진수 표기법으로 직접 지정하는 데 사용된다. 예를 들어, 특정 사용자만 접근 가능한 디렉토리를 만들 때 유용하다.

이 옵션은 주로 셸 스크립트 내에서 임시 디렉토리를 생성할 때 활용된다. 스크립트 실행 중 생성된 임시 파일이나 데이터가 다른 사용자에게 노출되거나 수정되는 것을 방지하기 위해, '-m' 옵션으로 권한을 제한하여 보안을 강화할 수 있다.

3. 1. 3. -v (--verbose)

`-v` 또는 `--verbose` 옵션은 `mkdir` 명령어가 실제로 어떤 디렉터리를 생성했는지 그 이름을 화면에 보여준다. 이 옵션은 종종 -p 옵션과 함께 사용된다.

3. 2. 예시

`-p` 옵션의 동작 예시는 다음과 같다.

mkdir -p /tmp/a/b/c

만약 `/tmp/a`는 존재하지만 `/tmp/a/b`가 존재하지 않는다면, `mkdir`은 `/tmp/a/b/c`를 생성하기 전에 `/tmp/a/b`를 생성한다.[1]

셸 확장 기능을 사용하면 한 번의 명령으로 더 복잡한 디렉터리 트리 구조를 생성할 수 있다. (이것은 `mkdir` 자체의 기능이 아닌 셸의 기능이다.)

mkdir -p tmpdir/{trunk/sources/{includes,docs},branches,tags}

위 명령은 다음과 같은 디렉터리 구조를 생성한다.

tmpdir

________|______

| | |

branches tags trunk

|

sources

____|_____

| |

includes docs

bash 스크립트에서 `mkdir`과 함께 변수를 사용하는 경우, POSIX `special` 내장 명령어인 'eval'이 유용할 수 있다.

DOMAIN_NAME=includes,docs

eval "mkdir -p tmpdir/{trunk/sources/{${DOMAIN_NAME}},branches,tags}"

4. 시스템 호출

초기 버전의 유닉스(4.1BSD, 초기 버전의 시스템 V)에서는 커널에 `mkdir()` 시스템 호출이 없었다. 이 때문에 `mkdir` 명령어는 setuid 루트 권한으로 실행되어야 했다. 대신 mknod() 시스템 호출을 사용하여 디렉터리를 생성하고, 명령어 내부에서 `.`과 `..` 같은 디렉터리 항목을 수동으로 연결했다.

POSIX 표준에서는 `mkdir` 함수의 함수 프로토타입을 다음과 같이 정의하고 있다.[17]



#include

int mkdir(const char *path, mode_t mode);



여기서 `path`는 생성할 디렉터리의 경로를 나타내는 문자열이고, `mode`는 생성될 디렉터리의 접근 권한을 지정한다.

마이크로소프트 비주얼 C++의 C 런타임 라이브러리에는 윈도우 API를 사용하여 구현된 유사한 함수 `_mkdir()`가 정의되어 있다.[18] 이 함수는 POSIX의 `mkdir` 함수와 유사하지만, 운영체제의 기능적 차이로 인해 접근 권한을 설정하는 `mode` 인수가 없다. 함수 이름이 밑줄(_)로 시작하는 것은 컴파일러 등 처리계를 위해 예약된 이름임을 나타낸다. POSIX와 동일한 이름의 `mkdir` 매크로도 정의되어 있지만, ISO 표준이 아니므로 사용이 권장되지 않는다.[19]

참조

[1] 웹사이트 Users guide http://www.bitsavers[...] bitsavers.org 2019-10-22
[2] 웹사이트 JaTomes Help - OS/2 Commands http://www.jatomes.c[...]
[3] 웹사이트 GitHub - reactos/reactos: A free Windows-compatible Operating System https://github.com/r[...] 2019-10-22
[4] 웹사이트 EFI Shells and Scripting http://software.inte[...] Intel 2013-09-25
[5] 웹사이트 Reference manual http://stratadoc.str[...] stratadoc.stratus.com 2019-10-22
[6] 웹사이트 Introduction to Tripos https://www.pagetabl[...] 2019-10-22
[7] 서적 AmigaDOS quick reference http://archive.org/d[...] Grand Rapids, Mi : Abacus 1988-10-22
[8] 웹사이트 Make new folder - MATLAB mkdir https://www.mathwork[...]
[9] 웹사이트 Function Reference: mkdir https://octave.sourc[...]
[10] 서적 Running MS-DOS Version 6.22 (20th Anniversary Edition), 6th Revised edition Microsoft Press 2003
[11] 웹사이트 DR DOS 6.0 User Guide Optimisation and Configuration Tips https://www.4corn.co[...] 2019-08-13
[12] 웹사이트 Datalight ROM-DOS User's Guide https://www.dataligh[...]
[13] 웹사이트 mkdir(1): make directories - Linux man page https://linux.die.ne[...]
[14] 웹사이트 Shell - KolibriOS wiki http://wiki.kolibrio[...]
[15] 웹사이트 Microsoft Windows XP - Mkdir http://www.microsoft[...] Microsoft 2012-10-25
[16] 웹사이트 Microsoft Windows XP - Cmd http://www.microsoft[...] Microsoft 2012-10-25
[17] 간행물 mkdir, mkdirat — make a directory | The Open Group Base Specifications Issue 8 / IEEE Std 1003.1-2024 | Copyright © 2001-2024 The IEEE and The Open Group https://pubs.opengro[...]
[18] 웹사이트 _mkdir, _wmkdir | Microsoft Learn https://learn.micros[...]
[19] 웹사이트 mkdir | Microsoft Learn https://learn.micros[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com