Як зробити mkdir тільки якщо dir ще не існує?
Я пишу скрипт оболонки для запуску під керуванням KornShell (ksh) на AIX. Я хотів би використати команду mkdir
для створення каталогу. Але каталог може вже існувати, в такому випадку я не хочу нічого робити. Тому я хочу або перевірити, що каталог не існує, або придушити помилку "File exists", яку mkdir
видає при спробі створити існуючий каталог.
Є думки, як краще це зробити?
1764
3
Спробуйте
mkdir -p
:Зауважте, що це також створить будь-які проміжні каталоги, яких не існує, наприклад, проміжні каталоги,
створить каталоги
foo
,foo/bar
іfoo/bar/baz
, якщо їх не існує.Деякі реалізації, такі як GNU
mkdir
, включаютьmkdir --parents
як більш читабельний псевдонім, але це не зазначено у специфікації POSIX/Single Unix і недоступно на багатьох поширених платформах, таких як macOS, різні BSD і різні комерційні Unix, тому його слід уникати.Якщо ви хочете уникнути помилки, коли батьківські каталоги не існують, і хочете створити каталог, якщо він не існує, ви можете спочатку
тестувати
на існування каталогу:Це повинно спрацювати:
або:
яка створить каталог, якщо його не існує, але попередить вас, якщо ім'я каталогу, який ви намагаєтеся створити, вже використовується чимось іншим, ніж каталог.
Використовуйте прапорець -p.