Открыть сервисСервис

Команда mkdir в Unix-подобных системах

mkdir (сокращение от англ. make directory) — команда Unix-подобных операционных систем, предназначенная для создания каталогов (папок). Стандартная утилита, определённая в POSIX и входящая в базовый набор инструментов GNU Coreutils. В большинстве дистрибутивов Linux и в macOS команда реализована именно в составе Coreutils; в FreeBSD и других BSD-системах используется утилита из проекта BSD userland.

Синтаксис и общие сведения

Общая форма вызова:

`` mkdir [параметры...] каталог [каталог...] ``

Команда может создавать одновременно несколько каталогов, перечисленных через пробел. Если каталог с указанным именем уже существует, команда завершается с ошибкой, если не задан ключ -p.

Опция -p

Ключ -p (от англ. parents — «родительские каталоги») заставляет mkdir создавать все промежуточные каталоги по пути, если они отсутствуют. Без этого ключа команда завершится ошибкой, если родительский каталог не существует. Например, вызов

`` mkdir -p /home/user/projects/new-project/src ``

создаст цепочку каталогов projects, new-project и src, если они ещё не созданы. Если целевой каталог уже существует, команда с ключом -p не выдаёт ошибку и завершается молча с кодом 0 — это свойство часто используется в скриптах для идемпотентного создания структуры каталогов.

Другие опции

ОпцияОписание
-m modeЗадаёт права доступа на создаваемый каталог в формате chmod (например, -m 755 или -m u=rwx,go=rx). По умолчанию применяется маска umask пользователя
-vПодробный режим: выводит сообщение для каждого созданного каталога
-ZУстанавливает контекст SELinux для нового каталога (значение по умолчанию)
--context=CTXЗадаёт конкретный контекст SELinux
-p -vЧасто используются вместе для логирования создания иерархии

Коды возврата

При успешном завершении mkdir возвращает код 0. Основные коды ошибок:

  • 1 — общая ошибка (нет прав, недостаточно места на диске);
  • 17 — каталог с таким именем уже существует (без -p);
  • 13 — нет прав на запись в родительский каталог.

Примеры использования

Создание одного каталога:

`` mkdir documents ``

Создание нескольких каталогов одновременно:

`` mkdir photos videos music ``

Создание вложенной структуры с заданием прав:

`` mkdir -p -m 700 ~/private/notes ``

Создание каталога с логированием:

`` mkdir -v build mkdir: создание каталога «build» ``

mkdir в языках программирования

Помимо одноимённой команды оболочки, функция создания каталогов доступна в большинстве языков программирования и библиотек:

  • в Python — os.mkdir() (создаёт один каталог) и os.makedirs() (создаёт иерархию, аналог mkdir -p);
  • в C — системный вызов mkdir() из <sys/stat.h>; в POSIX также доступен mkdirat();
  • в PHP — функция mkdir(), поддерживающая рекурсивный режим через параметр recursive = true;
  • в Node.js — fs.mkdir() с опцией recursive: true (начиная с Node.js 10.12) и fs.mkdirSync();
  • в PowerShell — New-Item -ItemType Directory или алиас mkdir, который в Windows PowerShell является обёрткой над New-Item.

mkdir в Windows

В Windows-подобных системах эквивалентом является команда md или mkdir (в командной строке cmd.exe они взаимозаменяемы и создают иерархию каталогов по умолчанию, без необходимости в ключе -p). В PowerShell mkdir — алиас для New-Item -ItemType Directory, который также создаёт промежуточные каталоги автоматически.

Историческая справка

Команда mkdir появилась в最早的 Unix-системах конца 1970-х годов и входила в исходный набор утилит Bell Labs. В 1992 году вместе с выходом POSIX.2 она была стандартизирована. В 1991 году Ричард Столлман начал разработку GNU Coreutils, в который вошла и GNU-реализация mkdir, поддерживающая расширенные опции (-Z, --context, -v).

См. также

  • rmdir — удаление пустого каталога
  • cd — смена текущего каталога
  • chmod — изменение прав доступа
  • GNU Coreutils

Исторические источники

Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru