Команда ‘mv’

Команда mv (от англ. move) — это один из фундаментальных инструментов в арсенале любого пользователя Linux и системного администратора. Несмотря на кажущуюся простоту, она обладает рядом тонкостей, которые позволяют эффективно управлять файловой системой, обеспечивая безопасность данных.

В этой статье мы разберем работу команды mv от основ до продвинутых флагов.




Что такое команда mv и как она работает?

Команда mv выполняет две основные задачи:

  1. Переименование файлов и директорий.
  2. Перемещение объектов из одной части файловой структуры в другую.

Интересный факт: на уровне файловой системы (если перемещение происходит в пределах одного раздела) mv просто обновляет записи в таблице индексов (inodes), не перезаписывая само содержимое файла. Это делает операцию мгновенной даже для огромных файлов.


Базовый синтаксис

Общий вид команды выглядит так:

mv [ОПЦИИ] ИСТОЧНИК НАЗНАЧЕНИЕ

Переименование файлов и папок

Если вы указываете новое имя в той же директории, файл будет просто переименован.

Bash
mv old_name.txt new_name.txt

Это же правило работает и для каталогов:

Bash
mv old_folder new_folder

Перемещение в другую директорию

Чтобы переместить файл в другое место, укажите путь к целевой папке:

Bash
mv file.txt /home/user/documents/

Перемещение нескольких файлов

Вы можете переместить сразу несколько объектов в одну целевую директорию:

Bash
mv file1.txt file2.txt photo.jpg /home/user/backup/

Безопасность превыше всего: защита от перезаписи

По умолчанию mv безжалостна: если в целевой папке уже существует файл с таким же именем, он будет перезаписан без предупреждения. Чтобы избежать потери данных, используйте следующие флаги:

Флаг -i (Interactive)

С этим флагом система спросит ваше подтверждение перед перезаписью.

Bash
mv -i important_data.txt /archive/
# Вывод: mv: overwrite '/archive/important_data.txt'?

Флаг -n (No-clobber)

Если вы хотите полностью запретить перезапись существующих файлов, используйте -n. Команда просто проигнорирует перемещение тех файлов, которые уже есть в папке назначения.

Флаг -v (Verbose)

В современных сценариях автоматизации часто важно видеть, что именно произошло. Флаг -v заставляет mv отчитываться о каждом действии.

Пример работы флага -v: детальный отчет о перемещении каждого файла.

Резервное копирование при перемещении

Иногда нужно обновить файл, но сохранить старую версию «на всякий случай». Для этого существует флаг -b (backup).

Bash
mv -b file.txt /target/folder/

Если файл существует, mv создаст копию старого файла с тильдой на конце (например, file.txt~).

Современная практика: В современных дистрибутивах (Ubuntu 24.04+, Fedora и др.) можно настраивать суффикс бэкапа с помощью опции --suffix.

Bash
mv --backup=numbered file.txt /target/folder/
# Создаст копии вида file.txt.~1~, file.txt.~2~

Сводная таблица основных опций mv

ФлагОписаниеКогда использовать
-iИнтерактивный режимПри ручной работе с важными данными
-nНе перезаписыватьПри массовом копировании в «забитые» папки
-fПринудительно (force)Чтобы подавить все запросы (использовать осторожно!)
-uОбновление (update)Переместить только если источник новее версии в приемнике
-vПодробный выводДля отладки скриптов

Особенности перемещения между разделами

Важно помнить, что когда вы перемещаете файл с одного физического диска (или раздела) на другой, mv работает иначе:

  1. Она копирует данные на новый раздел.
  2. Она удаляет оригинал после успешного копирования.

Если в процессе перемещения огромного архива на внешний диск произойдет сбой, оригинал останется целым, так как операция удаления выполняется только в самом конце.


Резюме

Команда mv — это не только про переименование. Это мощный инструмент, который при правильном использовании флагов -i, -u и -b превращается в надежный способ управления структурой вашего проекта или сервера.

Совет: При написании скриптов автоматизации всегда отдавайте предпочтение флагу -n или -u, чтобы избежать случайной потери пользовательских данных.


Читайте также

Было ли это полезно?

0 / 0

Добавить комментарий 0