У меня есть маленький вопрос здесь.
Если у меня есть два файла, скажем , filea
и fileb
, mv filea fileb
будет
- удалять
fileb
- переименовать
filea
вfileb
Тогда , если у меня есть два каталога, скажем , dira
и dirb
, mv dira dirb
бы
- двигаться
dira
вdirb
(это станетdirb/dira
)
Отмечая, что в обоих случаях нет никакого уведомления или сообщения, то это довольно противоречиво для меня. Я думаю, mv dira dirb
следует просто перезаписать dirb
содержимое dira
(или объединить две директории в директории с именем dirb
).
Я помню, как читал где-то, что имя каталога с косой чертой (как dira/
) обрабатывается как каталог, а имя без косой черты (как dira
) обрабатывается как файл (в определенных пределах, конечно). В любом случае, теперь я хочу, чтобы оболочка (zsh и, возможно, bash) учитывала мои обозначения каталога, используя косую черту. Есть ли опция терминала, которая позволяет мне применять это?
Чтобы уточнить, вот мое желаемое поведение:
mv dira dirb
приводитdirb
к перезаписи содержимогоdira
mv dira dirb/
приводитdira
к перемещению вdirb
(вdirb/dira
)
Кто-нибудь думал так же, как я? Или я просто странный?
Ответы:
Да, это немного противоречиво, даже в инструментах GNU.
Одна проблема с вашим предложением состоит в том, что непустые каталоги не могут быть удалены. Кроме того,
-T
(на земле GNU, во всяком случае) приблизительно соответствует тому, что вы хотите (первый случай):источник
alias ren=mv -T
.Если вы просто хотите переместить все из диры в дирб, вы можете бежать
mv dira/* dirb
.Согласно man-странице mv на моем HP-UX.
The mv command moves:
+ One or more directory subtrees (directory1, [directory2, ...]) to a new or existing directory (dest-directory).
источник
shopt -s dotglob
в bash это исправят.