Объяснение команды Linux mv для начинающих (8 примеров)
На этой странице
- Команда Linux mv
- Q1. Как использовать команду mv в Linux?
- Вопрос 2. Как убедиться, что mv запрашивает перед перезаписью?
- Вопрос 3. Как сделать так, чтобы mv не перезаписывал существующий файл?
- Q4. Как заставить mv удалить конечные косые черты (если есть) из исходного аргумента?
- В5. Как заставить mv рассматривать пункт назначения как обычный файл?
- Q6. Как заставить файл mv перемещаться только тогда, когда он новее, чем файл назначения?
- Q7. Как заставить mv выдавать подробности о том, что он делает?
- Q8. Как заставить mv создать резервную копию существующих файлов назначения?
- Заключение
Так же, как cp для копирования и rm для удаления, Linux также предлагает встроенную команду для перемещения и переименования файлов. Называется мв. В этой статье мы обсудим основы этого инструмента командной строки на простых для понимания примерах. Обратите внимание, что все примеры, используемые в этом руководстве, были протестированы на Ubuntu 22.04 LTS.
Команда Linux mv
Как уже упоминалось, команда mv в Linux используется для перемещения или переименования файлов. Ниже приведен синтаксис команды:
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
А вот что об этом говорит справочная страница:
Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.
Следующие примеры в стиле вопросов и ответов дадут вам лучшее представление о том, как работает этот инструмент.
Q1. Как использовать команду mv в Linux?
Если вы хотите просто переименовать файл, вы можете использовать команду mv следующим образом:
mv [filename] [new_filename]
Например:
mv names.txt fullnames.txt
Точно так же, если требуется переместить файл в новое место, используйте команду mv следующим образом:
mv [имя файла] [каталог назначения]
Например:
mv fullnames.txt /home/himanshu/Downloads
Q2. Как убедиться, что mv запрашивает перед перезаписью?
По умолчанию команда mv не выводит запрос, когда операция включает перезапись существующего файла. Например, на следующем снимке экрана показано, что существующий файл full_names.txt был перезаписан mv без каких-либо предупреждений или уведомлений.
Однако, если вы хотите, вы можете заставить mv запрашивать, используя параметр командной строки -i.
mv -i [имя_файла] [имя_нового_файла]
Таким образом, приведенные выше снимки экрана ясно показывают, что -i приводит к тому, что mv запрашивает разрешение пользователя перед перезаписью существующего файла. Обратите внимание: если вы хотите явно указать, что не хотите, чтобы mv запрашивал запрос перед перезаписью, используйте параметр командной строки -f.
Q3. Как сделать так, чтобы mv не перезаписывал существующий файл?
Для этого вам нужно использовать параметр командной строки -n.
mv -n [filename] [new_filename]
На следующем снимке экрана показано, что операция mv не была успешной, так как файл с именем full_names.txt уже существовал, а в команде была опция -n.
Примечание:
If you specify more than one of -i, -f, -n, only the final one takes effect.
Q4. Как заставить mv удалить конечные косые черты (если есть) из исходного аргумента?
Чтобы удалить косую черту в конце исходных аргументов, используйте параметр командной строки --strip-trailing-slashes, как показано ниже.
mv --strip-trailing-slashes [source] [dest]
Вот как официальная документация объясняет полезность этой опции:
This is useful when a source argument may have a trailing slash and specify a symbolic link to a directory. This scenario is in fact rather common because some shells can automatically append a trailing slash when performing file name completion on such symbolic links. Without this option, mv
, for example, (via the system’s rename function) must interpret a trailing slash as a request to dereference the symbolic link and so must rename the indirectly referenced directory and not the symbolic link. Although it may seem surprising that such behavior be the default, it is required by POSIX and is consistent with other parts of that standard.
Q5. Как заставить mv рассматривать пункт назначения как обычный файл?
Чтобы быть уверенным, что целевой объект рассматривается как обычный файл (а не каталог), используйте параметр командной строки -T.
mv -T [source] [dest]
Вот почему существует этот параметр командной строки:
This can help avoid race conditions in programs that operate in a shared area. For example, when the command ‘mv /tmp/source /tmp/dest’ succeeds, there is no guarantee that /tmp/source was renamed to /tmp/dest: it could have been renamed to/tmp/dest/source instead, if some other process created /tmp/dest as a directory. However, if mv -T /tmp/source /tmp/dest succeeds, there is no question that/tmp/source was renamed to /tmp/dest.
In the opposite situation, where you want the last operand to be treated as a directory and want a diagnostic otherwise, you can use the --target-directory (-t) option.
Q6. Как заставить файл mv перемещаться только тогда, когда он новее, чем файл назначения?
Предположим, что в каталоге «Загрузки» вашей системы существует файл с именем fullnames.txt, а в вашем домашнем каталоге есть файл с таким же именем. Теперь вы хотите обновить ~/Downloads/fullnames.txt с помощью ~/fullnames.txt, но только если последний новее. Затем, в этом случае, вам придется использовать параметр командной строки -u.
mv -u ~/fullnames.txt ~/Downloads/fullnames.txt
Эта опция особенно полезна в тех случаях, когда вам нужно принимать такие решения из сценария оболочки.
Q7. Как заставить mv выдавать подробности о том, что он делает?
Если вы хотите, чтобы mv выводил информацию, объясняющую, что именно он делает, используйте параметр командной строки -v.
mv -v [filename] [new_filename]
Например, на следующих снимках экрана показано, как mv выдает некоторые полезные сведения о том, что именно он сделал.
Q8. Как заставить mv создать резервную копию существующих файлов назначения?
Это можно сделать с помощью параметра командной строки -b. Файл резервной копии, созданный таким образом, будет иметь то же имя, что и файл назначения, но с добавлением к нему тильды (~). Вот пример:
Заключение
Как вы уже догадались, mv так же важен, как cp и rm, из-за функциональности, которую он предлагает — переименование/перемещение файлов, в конце концов, также является одной из основных операций. Мы обсудили большинство опций командной строки, предлагаемых этим инструментом. Таким образом, вы можете просто попрактиковаться в них и начать использовать команду. Чтобы узнать больше о mv, перейдите к его команде tee.