Jump to content

МВ (Unix)

МВ
Оригинальный автор(ы) Кен Томпсон , Деннис Ритчи
( AT&T Bell Laboratories )
Разработчик(и) Различные с открытым исходным кодом и коммерческие разработчики разработчики
Первоначальный выпуск 3 ноября 1971 г .; 52 года назад ( 1971-11-03 )
Операционная система Unix , Unix-подобные , Inferno , IBM i
Платформа Кросс-платформенный
Тип Команда
Лицензия основные утилиты : GPLv3

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

В реализациях UNIX, производных от AT&T UNIX , cp , ln и mv реализованы как одна программа с жестко связанными двоичными файлами. Поведение выбирается из имени пути argv[0]. Это распространенный метод, с помощью которого тесно связанные команды, объединенные в единое целое, позволяют пользователю указать конкретный порядок предполагаемых действий.

А move Команда, которая перемещает запись каталога в новый каталог, была впервые реализована в Multics . С ним можно заключить контракт mv. [1] Позже, mv команда появилась в версии 1 Unix [2] и стал частью второго выпуска X/Open Portability Guide за 1987 год. [3] Версия mv включенный в состав GNU coreutils, был написан Майком Паркером, Дэвидом Маккензи и Джимом Мейерингом. [4] Команда доступна в виде отдельного пакета для Microsoft Windows как часть UnxUtils коллекции , состоящей из собственных Win32- портов распространенных GNU Unix-подобных утилит. [5] Команда mv также была перенесена в операционную систему IBM i . [6]

Конфликт существующего файла

[ редактировать ]

Когда имя файла перемещается в существующее имя файла, существующий файл удаляется ( затирается по умолчанию ). Если существующий файл недоступен для записи, но находится в доступном для записи каталоге, команда mv запрашивает подтверждение (при запуске с терминала) перед продолжением, если не используется опция -f (force).

Случайную перезапись можно предотвратить с помощью GNU. -n (длинный формат: --no-clobber) флаг. Альтернативно, -u ( --update) перезаписывает только файлы назначения, которые старше исходных файлов, -i ( --interactive) запрашивает подтверждение при каждом конфликте имен и -b ( --backup) переименовывает целевые файлы.

Связанная с этим неоднозначность возникает, когда имя файла перемещается в существующий каталог. По умолчанию, mv воспринял бы это как попытку переместить имя внутри этого каталога. GNU mv имеет -T переключатель для отключения этого предположения и вместо этого попробуйте перезаписать каталог. Обратный -t делает операцию перехода в каталог явной. [4]

Перемещение вместо копирования и удаления

[ редактировать ]

Перемещение файлов внутри одной файловой системы обычно реализуется иначе, чем копирование файла с последующим удалением оригинала. На платформах, которые не поддерживают системный вызов переименования , в новый каталог добавляется новая ссылка , а исходная удаляется. Данные файла не доступны. Все POSIX -совместимые системы реализуют вызов переименования .

Фактическое перемещение (фактически переименование) выполняется значительно быстрее, чем обходная процедура копирования и перемещения. I-номер файла (сокращение от « номер индексного дескриптора ») не меняется. Для чтения перемещаемого файла не требуется никаких разрешений, поскольку — концептуально — только каталогизирующая в результате «перемещения» изменяется информация. Поскольку исходный и целевой каталоги изменяются, а именно записи создаются в целевом каталоге и удаляются из исходного каталога, для завершения перемещения требуется разрешение на запись в обоих каталогах. Перемещение файлов из одной файловой системы в другую может завершиться неудачно или может быть автоматически выполнено как атомарное действие копирования и удаления; фактические детали зависят от реализации.

Для перемещения каталога из одного родительского каталога в другой родительский каталог требуется разрешение на запись в перемещаемом каталоге, а также разрешения на изменение старых и новых родительских каталогов. Это связано с тем, что i-номер для записи каталога «..» (который можно использовать в любом контексте как псевдоним родительского элемента текущего каталога) изменяется в результате переименования.

Параметры

[ редактировать ]

Большинство версий поддержки mv:

  • -i При интерактивной обработке напишите подсказку в стандартную ошибку перед перемещением файла, который перезапишет существующий файл. Если ответ стандартного ввода начинается с символа «y» или «Y», предпринимается попытка перемещения. (Переопределяет предыдущую опцию -f.)
  • -f принудительно перезаписать пункт назначения (переопределяет предыдущую опцию -i).

Эти параметры являются частью рекомендаций по переносимости X/Open, которые позже легли в основу POSIX и SUS . Все POSIX-совместимые реализации mv должны поддерживать их. [7]

Команда Объяснение
mv myfile mynewfilenameпереименовывает «myfile» в «mynewfilename».
mv myfile subdir/myfileперемещает «myfile» в «subdir/myfile» относительно текущего каталога
mv myfile subdirто же, что и предыдущая команда, имя файла подразумевается таким же
mv be.03 /mnt/bkup/besкопирует «be.03» в каталог «bes» смонтированного тома «bkup», затем «be.03» удаляется
mv be.03/* /mnt/bkup/besТо же, что и выше, за исключением того, что каждый файл перемещается из be.03 удаляется индивидуально, а не все сразу после завершения всего копирования.
mv afile another mydirперемещает несколько файлов в каталог «mydir»
mv /var/log/*z ~/logsЭто займет больше времени, чем ожидалось, если «/var» находится в другой файловой системе, как это часто бывает, поскольку файлы будут копироваться и удаляться. Оболочка расширяется ~ пользователя в домашний каталог и лечит * как подстановочный знак .

Обратите внимание, что в приведенном выше примере /mnt относится к каталогу («точке монтирования»), к которому смонтирована данная файловая система. Именование таких каталогов /mnt является общепринятым соглашением, но оно ни в коем случае не является обязательным. «Файловую систему» ​​можно рассматривать как независимое дерево, которое логически рассматривается как единое целое; его корень «монтируется» поверх каталога по выбору администратора. Любое предыдущее содержимое этого каталога невидимо, но оно «восстанавливается» при размонтировании нового тома.

См. также

[ редактировать ]
  1. ^ Мультикоманды
  2. ^ mv(1) FreeBSD по основным командам Руководство
  3. ^ mv: перемещение файлов — Справочник по оболочке и утилитам, Единая спецификация UNIX , версия 4 от The Open Group
  4. ^ Jump up to: а б mv(1) Linux по основным командам Руководство
  5. ^ «Собственные порты Win32 некоторых утилит GNU» . unxutils.sourceforge.net .
  6. ^ ИБМ . «IBM System i Версия 7.2 Программирование Qshell» (PDF) . ИБМ . Проверено 05 сентября 2020 г.
  7. ^ Единая спецификация Unix # 1980-е: Мотивация
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: e7a08176f031c6f0b9100e185725dfd7__1695753540
URL1:https://arc.ask3.ru/arc/aa/e7/d7/e7a08176f031c6f0b9100e185725dfd7.html
Заголовок, (Title) документа по адресу, URL1:
mv (Unix) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)