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

Этот вопрос задает наилучший способ создания каталога при использовании 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 создавать ранее несуществующие каталоги).

  • Перемещение определенных каталогов с определенной глубины
  • перемещать файлы определенного шаблона в другой каталог
  • gunzip и создавать каталоги, следующие за именем zip-файла
  • mv: не может статировать
  • mv перезаписывает файл только для чтения без запроса
  • Перемещение файлов старше одного года в родительский каталог архива
  • Случайно выберите долю файлов из данного каталога
  • Самый быстрый способ переименования файлов без переименования пути каталога
  • Перемещение подкаталога в новый родительский каталог, где новое имя каталога увеличивается на 1
  • Как перемещать файл без сохранения разрешений
  • Переименование нескольких файлов, скрипт Bash, желательно с добавлением
  • Linux и Unix - лучшая ОС в мире.