Будет ли у `mv` возможность создавать каталоги?

Этот вопрос задает наилучший способ создания каталога при использовании mv если он не существует. Мой вопрос: почему это не встроенная функция mv ? Есть ли какая-то фундаментальная причина, из-за которой это не будет хорошей идеей?

  • Переименуйте набор файлов с шаблоном <имя> .1.gz.html в <имя> .html
  • переименование нескольких файлов путем удаления случайных чисел
  • Переместить файл и сохранить владельца и режим в одной атомной операции
  • Пакетное переименование файлов с восходящим числом
  • Обнаруживать, если переменная пуста
  • Перемещение нескольких файлов из нескольких каталогов в исходный адрес
  • Нет такого файла или каталога при перемещении файла
  • Как права на каталоги остаются такими же после команды mv?
  • One Solution collect form web for “Будет ли у `mv` возможность создавать каталоги?”

    Имейте в виду, что существует более одной реализации mv . mv вы используете в linux, не из того же источника, что и для OSX или Solaris и т. Д. Но для них все нужно вести себя одинаково – это точка стандартов . Вполне возможно, что реализация mv могла бы добавить опцию для этой цели, хотя, поскольку ее так просто иметь дело, она, вероятно, не стоит того, потому что очень незначительная выгода превосходит более значительное отрицательное последствие: код, написанный, который использовал такие нестандартная опция реализации не будет переноситься / вести себя постоянно в другой системе, используя стандартную реализацию.

    mv стандартизован POSIX, и это явно связывает его поведение с системным вызовом rename() . В ISO C поведение rename() не очень специфично, и многое осталось до реализации, но в POSIX вы заметите потенциальную ошибку ENOENT , указав, что «компонент префикса пути нового не существует», описывая поведение, ожидаемое в явных выражениях. Это лучше, чем двусмысленность, и оставляя такие детали до реализации, потому что последнее ухудшает переносимость.

    В защиту дизайна в контексте сценариев, вероятно, лучше по умолчанию отказываться от недопустимого целевого пути, чем предполагать, что его нужно просто создать. Это связано с тем, что сам путь может часто поступать из пользовательского ввода или конфигурации и может включать опечатку; в этом случае сценарий должен завершиться неудачно и указать пользователю, что они ввели недопустимый путь. Конечно, есть возможность для человека, который написал код для реализации различного поведения и создания каталогов, которых не существует, но лучше, чтобы вы отвечали за это, чем наоборот (отвечающий за обеспечение победы в mv call, t создавать ранее несуществующие каталоги).

    Linux и Unix - лучшая ОС в мире.