linux-labs

Вики / Базовые команды

mkdir — создание каталогов

Команда Linux · coreutils БазовоеФайлы

Создание каталогов: -p (с родителями), -m (права сразу), вложенные {скобки}, rmdir.

mkdir (make directory) создаёт каталоги. Пустой каталог удаляется rmdir, непустой — rm -r (осторожно, см. files-basics).

Главный ключ для новичка — -p: создаёт всю цепочку родительских каталогов и не ругается, если каталог уже есть.

mkdir reports                     # один каталог в текущем
mkdir a b c                       # сразу несколько
mkdir -p proj/src/api             # -p: создать ВСЮ цепочку (proj и proj/src тоже)
mkdir -p logs                     # -p ещё и не падает, если logs уже есть (удобно в скриптах)
mkdir -m 700 ~/.secrets           # -m: сразу выставить права (здесь — только владельцу)
mkdir -v new                      # -v: печатать, что создано (verbose)
mkdir -p site/{css,js,img}        # раскрытие скобок bash → site/css site/js site/img
mkdir -p data/{2024,2025}/{01,02} # комбинации: data/2024/01 … data/2025/02

Основные ключи:

Ключ Что делает
-p, --parents создать родителей по пути; не ошибка, если уже существует
-m, --mode=ПРАВА задать права сразу при создании (вместо umask)
-v, --verbose печатать имя каждого созданного каталога
rmdir empty                       # удалить ПУСТОЙ каталог
rmdir -p a/b/c                    # удалить c, b, a — если каждый становится пустым
rmdir dir 2>/dev/null || rm -r dir  # если не пуст — снести рекурсивно

rmdir намеренно удаляет только пустое — это страховка. Для непустого нужен rm -r (необратимо, проверь путь).

mkdir: cannot create directory 'x': File exists

Каталог уже есть. В скриптах используй mkdir -p — он молча пропустит.

mkdir: cannot create directory 'a/b/c': No such file or directory

Нет промежуточных каталогов (a, a/b). Добавь -p.

Permission denied

Нет прав w+x на родительский каталог. Проверь ls -ld . и права — см. chmod-chown.

Права получились не те, что в -m

-m задаёт права итоговому каталогу напрямую (umask не применяется к нему), но к промежуточным каталогам из -p применяется обычный umask.

mkdir -p a/b/c                    # цепочка каталогов
mkdir -p site/{css,js,img}        # несколько за раз
mkdir -m 700 ~/.secrets           # с правами сразу
rmdir empty                       # удалить пустой

См. также