Отключение интерактивного режима команды cp (copy) (cp: overwrite?)

Кто-нибудь знает, как бы я отключил интерактивный режим при использовании cp?

Я пытаюсь рекурсивно скопировать каталог в другой, и для каждого файла, который перезаписывается, я должен ответить 'y'.

Я использую команду:

cp -r /usr/share/drupal-update/* /usr/share/drupal

Но меня просят подтвердить каждую перезапись:

cp: overwrite `./CHANGELOG.txt'? y  
cp: overwrite `./COPYRIGHT.txt'? y  
cp: overwrite `./INSTALL.mysql.txt'? y  
cp: overwrite `./INSTALL.pgsql.txt'? y  
...

Я использую версию Ubuntu Server Jaunty.
Спасибо!

3 ответа

Решение

Выполнение:

alias cp

Увидеть, если cp был псевдоним cp -i

В этом случае запустите:

\cp -r /usr/share/drupal-update/* /usr/share/drupal 

игнорировать псевдоним

cp -f не будет запрашивать подтверждение (это сила)

cp -fr /usr/share/drupal-update/* /usr/share/drupal

Да, причина того, что команда является интерактивной, заключается в том, что во многих распространенных оболочках по умолчанию копия имеет псевдоним, который можно найти, выполнив команду следующим образом:

alias cp

вывод будет

alias cp='cp -i'

Существуют разные способы ее решения. Решения:

Решение 1. Установите псевдоним для этого сеанса/постоянно в системе или выгрузите псевдоним для команды cp.

unset alias: удалит псевдоним для этой команды. unalias cp

или

сброс псевдонима:

alias cp='cp'

приведенная выше команда установит псевдоним для самого себя, а не дляcp -i. Таким образом, вы можете запускать команды копирования столько, сколько захотите, без интерактивного режима только для этого терминального сеанса (временно). Чтобы сделать это постоянным, вы можете сбросить псевдоним в соответствующих файлах, например

      Bash – ~/.bashrc
ZSH – ~/.zshrc
Fish – ~/.config/fish/config.fish

Решение 2. Запустить командой с обратной косой чертой.\в начале команды копирования.

\cp foo.log /tmp/

Это фактически игнорирует псевдоним команды только для этой команды.

Вывод: Решение 1 полезно установить временным или постоянным, если вы собираетесь запускать много команд и хотите отключить интерактивный режим.

Решение2 хорошо, если у вас есть только параcpтолько команды и не хотите сбрасывать псевдоним, это будет хорошо.

Другие вопросы по тегам