Estou tentando usar o cpcomando e forçar uma substituição.
Eu tentei cp -rf /foo/* /bar, mas ainda sou solicitado a confirmar cada substituição.
Estou tentando usar o cpcomando e forçar uma substituição.
Eu tentei cp -rf /foo/* /bar, mas ainda sou solicitado a confirmar cada substituição.
Respostas:
Você pode fazer isso yes | cp -rf xxx yyy, mas meu sentimento de intestino diz que, se você faz isso como root - seu .bashrcou .profiletem um apelido cppara - cp -i, a maioria dos sistemas modernos (principalmente derivados de RH) fazem isso nos perfis de raiz.
Você pode verificar aliases existentes executando aliasno prompt de comando ou which cpverificar apenas aliases cp.
Se você tiver um alias definido, a execução unalias cpabolirá a da sessão atual; caso contrário, você poderá removê-lo do seu perfil de shell.
Você pode ignorar temporariamente um alias e usar a versão sem alias de um comando, prefixando-o com \, por exemplo,\cp whatever
¯\_(ツ)_/¯sobre isso.
(primarily RH-derivatives)comentário :)
unalias cpe copiar o que você precisar copiar, você pode definir o alias de volta ao padrão fazendo alias cp='cp -i'. Depois disso, execute alias cppara verificar se está de volta ao alias padrão.
Provavelmente, isso é causado por cpjá estar associado a algo parecido cp -i. Ligar cpdiretamente deve funcionar:
/bin/cp -rf /zzz/zzz/* /xxx/xxx
Outra maneira de contornar isso é usar o yescomando:
yes | cp -rf /zzz/zzz/* /xxx/xxx
yescomando. Hilário. E um dia eu posso usá-lo.
Como algumas das outras respostas afirmaram, você provavelmente usa um algum lugar apelido que mapeia cppara cp -iou algo similar. Você pode executar um comando sem nenhum alias, precedendo-o com uma barra invertida. No seu caso, tente
\cp -r /zzz/zzz/* /xxx/xxx
A barra invertida desabilitará temporariamente os apelidos que você chamou cp.
cp, \cpinvocará o comando cp. Parece ser o equivalente à execução command cp.
Você provavelmente tem um alias em algum lugar, mapeando cppara cp -i; porque com as configurações padrão, cpnão solicitará a substituição. Verifique seu .bashrc, seu .profileetc.
Consulte cp manpage : Somente quando o -iparâmetro for especificado, cpna verdade, será solicitado antes da substituição.
Você pode verificar isso através do aliascomando:
$ alias
alias cp='cp -i'
alias diff='diff -u'
....
Para definir o alias, use:
$ unalias cp
Como outras respostas afirmaram, isso pode acontecer se cpfor um alias de cp -i.
Você pode anexar um \antes do cpcomando para usá-lo sem alias.
\cp -fR source target
Por padrão, cptem aliase para cp -i. Você pode verificá-lo, digitar aliase pode ver alguns como:
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'
Para resolver esse problema, basta usar o /bin/cp /from /tocomandocp /from /to
cp geralmente é um alias como este
alias cp='cp -i' # i.e. ask questions of overwriting
se tiver certeza de que deseja fazer a substituição, use o seguinte:
/bin/cp <arguments here> src dest
Eu achei isto
'cp' -rf * /data/danalonso_testing/target/
Fonte: /superuser/358843/how-to-replace-all-the-contents-from-one-folder-with-another-one/358851
Então, eu me deparo muito com isso porque mantenho o alias do cp cp -ive achei um truque interessante. Acontece que, enquanto -ie -ntanto cancelar directivas sobrescrever anteriores, -fnão. No entanto, se você usá- -nflo, adiciona a capacidade de limpar o arquivo -i. Assim:
cp -f /foo/* /bar <-- Prompt
cp -nf /foo/* /bar <-- No Prompt
Muito legal né? / necropost
cp -u ...
cp --update ...
também funciona.
Outra maneira de chamar o comando sem o alias é usar o commandbuilt-in no bash.
command cp -rf /zzz/zzz/*
-n é "não sobrescrever", mas a pergunta dele é totalmente oposta à que você respondeu.
Para evitar essa confirmação, você pode simplesmente executar o comando cp com o caminho absoluto, evitando o alias.
destino do arquivo de origem / bin / cp
Se você deseja manter o alias no nível global como está e apenas deseja alterar o seu script.
Apenas use:
alias cp = cp
e escreva seus comandos de acompanhamento.
Simplesmente usei unalias para remover o alias "cp -i", depois faça a cópia e, em seguida, defina o alias. :
unalias cp
cp -f foo foo.copy
alias cp="cp -i"
Não é o código mais bonito, mas fácil de configurar e eficiente. Também verifico que o alias já está atrasado com um simples
alias |grep cp
Não é cp -i. Se você não deseja ser solicitado para confirmação, é cp -n; por exemplo:
cp -n src dest
Ou no caso de diretórios / pastas é:
cp -nr src_dir dest_dir
cp -ipelo sistema, o que significa que eles estavam tentando superar o padrão e forçar uma substituição. Parece que você pode ter confundido que por ser a sintaxe sugerida, mas -nvai evitar uma substituição.