Копировать существующие файлы без подтверждения?

18

Мне нужно скопировать и перезаписать большое количество файлов, я использовал следующую команду:

# cp -Rf * ../

Но тогда, когда в папке назначения существует файл с таким же именем, я получаю этот вопрос:

cp: overwrite `../ibdata1'? 

Проблема в том, что у меня есть около 200 файлов, которые будут перезаписаны, и я не думаю, что нажатие Y then Enter200 раз является правильным способом сделать это.

Итак, каков правильный путь к этому?

Итай Ганот
источник

Ответы:

38

Вы можете сделать это yes | cp -rf myxx, или, если вы делаете это как root - ваш .bashrc или .profile имеет псевдоним cp к cp -i, большинство современных систем делают это с корневыми профилями.

Вы можете временно обойти псевдоним и использовать не псевдонимную версию команды, поставив перед ней префикс \, например, \ cp

TBI Infotech
источник
4
+1 за указание на то, как обойти псевдоним. Соблазн до -1 для решения грубой силы.
Хеннес
5
+! для yesфункции трубы - очень удобно!
Эндрю Ньюби
14

Вы понимаете, что RHEL и CentOS пытались защитить начинающих пользователей, устанавливая псевдонимы для пользователя root, чтобы предотвратить случайную перезапись и удаление файлов?

alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'

Это -iто, что требует подтверждения при изменении или удалении существующих файлов. Поскольку расширение псевдонима происходит перед выполнением команды, даже использование --force -f коммутатора все еще требует подтверждения.

Вы можете удалить псевдоним навсегда, отредактировав /root/.bashrcфайл, удалив псевдоним на время сеанса unalias cp или для одной команды, используя один из:

  • использовать полный путь /bin/cp
  • используйте кавычки "cp"или 'cp'вокруг команды
  • используйте ключевое слово команды, например command cp
  • избежать команды \cp
HBruijn
источник