Команда 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
¶Исторические источники
- POSIX.1-2017, The Open Group — спецификация команды
mkdir - GNU Coreutils manual — документация по утилите
mkdir - «The Linux Command Line» Уильяма Шотта
- Справочное руководство
man mkdirв Linux
