Перенос и переименование делает одна и та же команда. Она же объясняет, куда делся первый черновик.
mv переносит файл: после команды под старым именем его нет. Назначение mv читает по той же таблице, что и cp. Каталог — файл окажется внутри. Нового имени нет — файл получит это имя. Существующий файл — он будет заменён, без вопроса.
Поэтому переименование — та же mv в пределах одного каталога: mv notes.txt README.txt. С каталогом в назначении это перенос: mv README.txt handoff/. Каталоги mv переносит так же, без дополнительных ключей.
Теперь история с черновиками. Каталога archive не было, поэтому для первой mv archive было новым именем — первая строка таблицы. Для второй это имя уже носил файл — третья строка, и mv заменила его без вопроса. Текст первого черновика потерян.
Защищают те же приёмы, что у cp: каталог создают заранее, назначение пишут с косой чертой — mv draft1.txt archive/, а замену подтверждают ключом -i.
В текущем каталоге есть файл report.txt и каталог old. Что ты увидишь в ls после mv report.txt old?
-
Копию с источником на месте делает
cp. Послеmvпод старым именем файла нет. -
Косая черта — страховка на случай, если каталога нет. Когда old существует,
mv report.txt oldиmv report.txt old/делают одно и то же. -
Существующий каталог в назначении значит «положить внутрь». Заменить каталог файлом
mvне может — проверьls -l old.
Назначение old — существующий каталог, поэтому mv переносит report.txt внутрь под тем же именем. Проверь ls old: там report.txt.
Главное в шаге
-
Переименование и перенос — одна команда
mv: всё решает назначение. -
Существующий файл в назначении
cpиmvзаменяют молча;-iспрашивает перед заменой. - Косая черта в конце назначения требует каталог: если его нет, команда откажет и файл сохранит имя.