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

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

  • сценарий оболочки для перемещения выбранных файлов из одного каталога в другой
  • как переместить много подпапок в родительский каталог?
  • git mv несколько файлов, сохранить расширение
  • Как переместить подкаталоги в другой подкаталог в одном каталоге?
  • перемещение подкаталогов с помощью команды mv
  • Переименовать часть нескольких файлов
  • команда «find ... -exec mv ...» создала файл со странным контентом
  • 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 - лучшая ОС в мире.