удалить старый каталог, создать новый пустой каталог

удалить старый каталог, создать новый пустой каталог

Одна команда bash >| fooсоздает пустой файл foo, независимо от того, был ли он ранее непустым, пустым или отсутствовал. (Она завершается ошибкой, если файл был доступен только для чтения или являлся каталогом.)

Есть ли похожая команда для создания пустого каталога? Она должна работать, если каталог уже был тамили нет, пустойили нет. Примерно то же самое, rm -rf fooDir; mkdir -p fooDirно без нарушения правила Don't Repeat Yourself. (Допускается сбой, если каталоги или файлы доступны только для чтения.)

Контекст — это скрипт, который создает каталог для хранения своих выходных данных, но стирает выходные данные любого предыдущего запуска.

решение1

Я думаю, что ответ: нет. Нет единой команды для того, о чем вы просите,по меньшей мерепо этим двум ссылкам:

Все, что я могу сказать, просто используйте две отдельные команды. Это может быть уродливо и «неудобно», но на 99% это единственный способ сделать это.

решение2

Сначала найдите пустой каталог. Там нетуниверсальныйспособ сделать это, но вы можете либо создать его, либо найти вероятного кандидата с помощью find /var -type d -empty | xargs ls -ltd. Например, в Ubuntu 14 /var/lib/ntpdateпустует уже много лет. Другой безопасный вариант — /etc/ppp/resolv.

Тогда единственная команда — rsync -a --delete /var/lib/ntpdate/ fooDir. Завершающий слеш имеет значение. К сожалению, без универсального /dev/nullDir, это решение, скорее всего, озадачит новичка. Так что если ваш скрипт должен делать это много раз, стоит сначала создать его /tmp/emptyDir, а затем использовать с rsync.

Связанный контент