Звичайно, можна стверджувати, що створення батьківського каталогу має бути за замовчуванням, а для запобігання створенню каталогу, якщо його не існує, може бути використаний певний варіант перевірки.
Але причина, чому навпаки, - це лише історія. Базова версія mkdir не створювала батьківських каталогів. Ось чому дистрибутив X11 поставився разом із командою на ім'я mkdirhier, яка змогла виконати це завдання: перевірити, чи існують батьківські каталоги та створити їх, якщо це необхідно.
Пізніше ця функціональність була додана до команди mkdir у багатьох версіях UNIX (я не знаю, чи є вона зараз у стандарті POSIX). Для підтримки сумісності ця функція була доступна при включенні прапора опції: -p.
Чому погано його включати за замовчуванням? Сценарії можуть покладатися на помилку mkdir, якщо батьківський каталог не існує. Тим більше, що користувач root може створювати дерева директорій за замовчуванням небезпечно.
Приклад:
if mkdir /backup/$(uname -n)/$(date +%Y%m%d)
then
perform_backup ...
У цьому прикладі буде створено каталог, і резервне копіювання виконується навіть у тому випадку, коли файлова система /backupне змонтована і батьківська /backup/$(uname -n)не існує, якщо за замовчуванням було б навпаки.
Правило великого пальця: корисна практика не змінювати поведінку за замовчуванням жодного інструменту. За бажанням надайте варіанти, щоб дозволити змінити поведінку за замовчуванням.
alias mkdir="mkdir -p".