У меня есть имя каталога foo, расположенное в ~/Desktop. Предположим, я хочу создать каталог из терминала с тем же именем и в том же месте. Когда я попытался mkdir, он дал ошибку:
mkdir: cannot create directory `/home/nux/Desktop/foo': File exists
Это имеет смысл, но я хочу заменить foo, если существует. Я просмотрел man mkdir, но нет такого варианта.
Итак, как перезаписать каталог foo?
Почему у опции mkdir нет опции сделать это?
Нет, нет единой команды, чтобы делать то, что вы спрашиваете.
Почему?
Это философия Unix: пишите программы, которые делают что-то одно и делают это хорошо. Напишите программы для совместной работы.1В этом случае команды mkdir и rm выполняют то, что вам нужно, и работают хорошо вместе, поскольку rm -r также удалит каталог, поэтому в дальнейшем mkdir создаст каталог.
1 Искусство программирования Unix, Эрик С. Раймонд, сам цитирует Дага Макилроя.
Команда удаления каталога - rm. Таким образом, вам нужны две команды.
rm -r ~/Desktop/foo/
mkdir ~/Desktop/foo/
Как показано в комментариях, вы можете связать их с помощью ; (= сделать оба, даже если первый не удалось) или && (= только mkdir, когда rm не fail).
-r предназначен для удаления dirs. Первая команда также удаляет ВСЕ содержимое каталога. Если это не ваше намерение, то rm и mkdir не являются тем, что вы ищете: разрешения - chmod и chown.
почему у mkdir нет этой опции?Неоднозначность. mkdir означает создание каталога. Не удалять и создавать каталог. И поскольку команда rm предназначена для удаления файлов, нет необходимости в rmdir удалять каталог.