Иногда вам может понадобиться создать каталог, если он не существует в Linux. Вы можете легко сделать это с помощью команды mkdir. В этой статье мы узнаем, как создать каталог, если он не существует.
Как выполнить mkdir только в том случае, если каталог не существует
Обычно, если вы создаете каталог, который уже существует, вы получите ошибку:
1 | mkdir var/data/backup |
1 | mkdir: cannot create directory ‘data/backup’: File exists |
Если вы выполняете сценарий, требующий создания каталога, то подобная ошибка может привести к остановке выполнения сценария.
Команда mkdir предоставляет опцию -p, которая автоматически проверяет, существует ли родительская папка. Она используется для создания многоуровневых вложенных каталогов путем проверки родителей. Вы также можете использовать эту команду для проверки существования каталога перед его созданием. В этом случае, если указанный каталог уже существует, команда mkdir пропустит его.
Вот пример.
1 | mkdir -p var/data/backup |
В качестве альтернативы можно подавить эту ошибку, перенаправив сообщение об ошибке на /dev/null.
1 | mkdir /var/data/backup >/dev/null 2>&1 |
Вы также можете использовать флаг -d для проверки существования каталога и создания каталога только в том случае, если он не существует. Вот пример. Мы использовали условный оператор OR, первое условие которого проверяет, существует ли каталог или нет. Если каталог не существует, то возвращается False, а затем выполняется второе условие.
1 | [ -d /var/data/backup ] || mkdir var/data/backup |
С другой стороны, если каталог существует, то первое условие оценивается как True, а второе условие не выполняется.