14 ответов:
можно сделать
yes | cp -rf xxx yyy, но мой кишечник говорит, что если вы делаете это как корень-ваш.bashrcили.profileприсвоен псевдонимcpдоcp -i, большинство современных систем (в первую очередь RH-производные) делают это для корневых профилей.вы можете проверить существующие псевдонимы, под управлением
aliasв командной строке, илиwhich cpпроверять псевдонимы только дляcp.если у вас есть определенный псевдоним, запуск
unalias cpотменит, что для текущей сессии, в противном случае вы можете просто удалите его из профиля оболочки.вы можете временно обойти псевдоним и использовать не искаженные версии команды начинаются с
\, например,\cp whatever
это, вероятно, вызвано
cpбудучи уже под псевдонимом что-то вродеcp -i. Звонюcpнапрямую должно работать:/bin/cp -rf /zzz/zzz/* /xxx/xxxдругой способ обойти это, чтобы использовать
yesкоманда:yes | cp -rf /zzz/zzz/* /xxx/xxx
как заявили некоторые из других ответов, вы, вероятно, используете псевдоним где-то, который отображает
cptocp -iили что-то подобное. Вы можете выполнить команду без каких-либо псевдонимов, предваряя ее обратной косой чертой. В вашем случае, попробуйте\cp -r /zzz/zzz/* /xxx/xxxобратная косая черта временно отключит любые псевдонимы, которые вы назвали
cp.
у вас, вероятно, есть псевдоним где-то, отображение
cpдоcp -i, потому что с настройками по умолчанию,cpне будет просить перезаписать. Проверьте ваш.bashrcваш.profileetc.посмотреть СР man-страницы: только когда
-iпараметр указан будетcpна самом деле запрос перед перезаписью.вы можете проверить это с помощью :
$ alias alias cp='cp -i' alias diff='diff -u' ....чтобы определить псевдоним, используйте:
$ unalias cp -i
как заявили другие ответы, это может произойти, если
cp- это псевдонимcp -i.вы можете добавить a
\доcpкоманда, чтобы использовать его без псевдонима.\cp -fR source target
по умолчанию
cpимеет aliase кcp -i. Вы можете проверить это, введитеaliasи вы можете увидеть некоторые типа:alias cp='cp -i' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias mv='mv -i' alias rm='rm -i'для решения этой проблемы просто используйте
cp /from /to
cpобычно псевдонимы, как этоalias cp='cp -i' # i.e. ask questions of overwritingЕсли вы уверены, что хотите сделать перезапись, то используйте это:
/bin/cp <arguments here> src dest
вы также можете использовать эту команду:
cp -ru /zzz/zzz/* /xxx/xxxэто будет обновить существующий файл с новым, хотя.
другой способ вызвать команду без псевдонима-использовать
commandвстроенные в bash.
command cp -rf /zzz/zzz/*
- n-это "не перезаписывать", но его вопрос полностью противоположен тому, что вы ответили.
чтобы избежать этого подтверждения, Вы можете просто запустить команду cp с абсолютным путем, это позволит избежать псевдонима.
/bin / CP sourcefile destination
Если вы хотите сохранить псевдоним на глобальном уровне, как есть, и просто хотите изменить свой скрипт.
просто использовать:
псевдоним cp=cp
а затем напишите ваши последующие команды.
Я просто использовал unalias, чтобы удалить псевдоним" cp-i", затем сделать копию, а затем установить обратно псевдоним. :
unalias cp cp -f foo foo.copy alias cp="cp -i"не самый красивый код, но легко установить и эффективно. Я также проверяю, что псевдоним уже установлен назад с помощью простого
alias |grep cp
это не
cp -i. Если вы не хотите, чтобы вас попросили подтвердить, этоcp -n, например:cp -n src destили в случае каталогов/папок:
cp -nr src_dir dest_dir
Comments