Нет.
del_mtd_parttions вызывается только во время очистки. Не существует пути, где он вызывается перед повторным добавлением различных разделов.
Он был переименован в known_hosts.old
, следовательно, было перезаписано предыдущее содержимое known_hosts.old
.
Поскольку у вас уже есть файл с именем known_hosts.old
, шаблон glob *. Old
был расширен до known_hosts.old
.
Вкратце, следующее:
mv id_rsa *.old
было расширено до:
mv id_rsa known_hosts.old
В bash
, если бы там не было файла с именем known_hosts.old
, он бы расширить до литерала *. old
(если вы не включили nullglob
).
Похоже, вы думали, что mv id_rsa * .old
переместит id_rsa
в id_rsa.old
с заменой *
по первому аргументу, но это не так. Подстановочные знаки расширяются оболочкой, а не командой. К тому времени, когда mv
увидит команду, оболочка расширила подстановочный знак. Возможны четыре случая:
mv
вызывается с аргументами id_rsa
и *. Old
. Затем он перемещает id_rsa
в файл с именем *. Old
(звездочка является первым символом имени файла). Некоторые оболочки (в зависимости от их конфигурации) вместо этого будут отображать ошибку и не запускать команду в этом случае. mv
перемещает id_rsa
в этот совпадающий файл, перезаписывая предыдущий файл. Вот что произошло в вашем случае: mv
был вызван с аргументами id_rsa
и known_hosts.old
, чтобы known_hosts.old
были перезаписаны . mv
жалуется, потому что все файлы, кроме последнего, являются исходными, и нет смысла перемещать несколько файлов в один и тот же файл. mv
видит их как исходные файлы. Чтобы избежать неожиданной перезаписи целевых файлов mv
, запросите подтверждение. Поместите это в инициализацию вашей оболочки (например, .bashrc
):
alias cp='cp -i'
alias mv='mv -i'
Чтобы переименовать файл на основе его существующего имени, только mv
не поможет. Вам нужно либо использовать другой инструмент, либо предоставить mv
полное имя назначения. Один из способов сделать то, что вы пытались сделать, - использовать расширение скобок , которое позволяет вам указывать слова с общей основой.
mv id_rsa{,.old}
Оболочка расширяет это до mv
с аргументами id_rsa
( id_rsa
, объединенными с пустой строкой) и id_rsa.old
( id_rsa
конкатенирован с .old
).
Для массового переименования файлов в соответствии с шаблонами наиболее часто используются инструменты zmv
(только zsh), prename
и mmv
. Чтобы переименовать все файлы формы с id_ SOMETHING
на id_ SOMETHING .старый
, вы можете использовать
zmv 'id_*' '$f.old'
mmv 'id_*' 'id_#1.old'
prename 's/$//' id_*