Я пытаюсь использовать cpкоманду и принудительно перезаписать.
Я пытался cp -rf /foo/* /bar, но мне все равно предлагается подтвердить каждую перезапись.
Я пытаюсь использовать cpкоманду и принудительно перезаписать.
Я пытался cp -rf /foo/* /bar, но мне все равно предлагается подтвердить каждую перезапись.
Ответы:
Вы можете сделать yes | cp -rf xxx yyy, но мой gutfeeling говорит , что если вы делаете это как корень - ваш .bashrcили .profileимеет псевдоним cpдля cp -i, большинство современных систем ( в первую очередь , RH-производные) , которые делают для корневых профилей.
Вы можете проверить существующие псевдонимы, запустив их aliasв командной строке, или which cpпроверить псевдонимы только для cp.
Если у вас есть определенный псевдоним, запуск unalias cpотменит его для текущего сеанса, в противном случае вы можете просто удалить его из своего профиля оболочки.
Вы можете временно обойти псевдоним и использовать не псевдоним версии команды, добавив к ней префикс \, например:\cp whatever
¯\_(ツ)_/¯об этом.
(primarily RH-derivatives)замечание :)
unalias cpи скопировав все, что вам нужно скопировать, вы можете сделать псевдоним обратно по умолчанию, выполнив alias cp='cp -i'. После этого запустите, alias cpчтобы убедиться, что он вернулся к псевдониму по умолчанию.
Вероятно, это вызвано тем, cpчто у вас уже есть псевдоним cp -i. Звонок cpнапрямую должен работать:
/bin/cp -rf /zzz/zzz/* /xxx/xxx
Еще один способ обойти это - использовать yesкоманду:
yes | cp -rf /zzz/zzz/* /xxx/xxx
yesкоманду. Веселое. И когда-нибудь я могу использовать это.
Как некоторые другие ответы заявили, вы , вероятно , использовать псевдоним где - нибудь , которая отображает cpна cp -iили что - то подобное. Вы можете запустить команду без псевдонимов, поставив перед ней обратную косую черту. В вашем случае попробуйте
\cp -r /zzz/zzz/* /xxx/xxx
Обратная косая черта временно отключит любые псевдонимы, которые вы вызвали cp.
cp, \cpбудет вызывать команду cp. Это похоже на бег command cp.
Возможно, у вас где-то есть псевдоним, который отображается cpна cp -i; потому что с настройками по умолчанию, cpне будет просить перезаписать. Проверьте ваш .bashrc, ваш .profileи т. Д.
См. Cp manpage : Только когда -iзадан параметр, будет cpфактически запрашиваться перед перезаписью.
Вы можете проверить это с помощью aliasкоманды:
$ alias
alias cp='cp -i'
alias diff='diff -u'
....
Чтобы определить псевдоним, используйте:
$ unalias cp
Как указали другие ответы, это может произойти, если cpпсевдоним cp -i.
Вы можете добавить команду \перед cpкомандой, чтобы использовать ее без псевдонима.
\cp -fR source target
По умолчанию cpимеет псевдоним 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'
Чтобы решить эту проблему, просто используйте /bin/cp /from /toкоманду вместоcp /from /to
cp как правило, так псевдоним
alias cp='cp -i' # i.e. ask questions of overwriting
если вы уверены, что хотите сделать перезапись, используйте это:
/bin/cp <arguments here> src dest
я нашел это
'cp' -rf * /data/danalonso_testing/target/
Источник: /superuser/358843/how-to-replace-all-the-contents-from-one-folder-with-another-one/358851
Так что я часто сталкиваюсь с этим, потому что я сохраняю псевдоним cp cp -iv, и я нашел хитрый трюк. Оказывается, что и то -iи -nдругое отменяет предыдущие директивы перезаписи, -fно не отменяет. Тем не менее, если вы используете -nfэто добавляет возможность очистить -i. Так:
cp -f /foo/* /bar <-- Prompt
cp -nf /foo/* /bar <-- No Prompt
Довольно аккуратно, да? / necropost
cp -u ...
cp --update ...
тоже работает.
Другой способ вызвать команду без псевдонима - использовать commandвстроенную в bash.
command cp -rf /zzz/zzz/*
-n "не перезаписать", но его вопрос полностью противоположен тому, на что вы ответили.
Чтобы избежать этого подтверждения, вы можете просто запустить команду cp с абсолютным путем, это позволит избежать псевдонима.
/ bin / cp исходный файл
Если вы хотите сохранить псевдоним на глобальном уровне, как есть, и просто хотите изменить свой сценарий.
Просто используйте:
псевдоним 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
cp -i, что означает, что они пытаются преодолеть значение по умолчанию и вызвать перезапись. Это звучит , как вы , возможно, перепутал , что за то , что предлагаемый синтаксис, но -nбудет предотвратить перезапись.