Estou tentando usar o cp
comando e forçar uma substituição.
Eu tentei cp -rf /foo/* /bar
, mas ainda sou solicitado a confirmar cada substituição.
fonte
Estou tentando usar o cp
comando e forçar uma substituição.
Eu tentei cp -rf /foo/* /bar
, mas ainda sou solicitado a confirmar cada substituição.
Você pode fazer isso yes | cp -rf xxx yyy
, mas meu sentimento de intestino diz que, se você faz isso como root - seu .bashrc
ou .profile
tem um apelido cp
para - cp -i
, a maioria dos sistemas modernos (principalmente derivados de RH) fazem isso nos perfis de raiz.
Você pode verificar aliases existentes executando alias
no prompt de comando ou which cp
verificar apenas aliases cp
.
Se você tiver um alias definido, a execução unalias cp
abolirá 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 cp
e copiar o que você precisar copiar, você pode definir o alias de volta ao padrão fazendoalias cp='cp -i'
. Depois disso, executealias cp
para verificar se está de volta ao alias padrão.Provavelmente, isso é causado por
cp
já estar associado a algo parecidocp -i
. Ligarcp
diretamente deve funcionar:Outra maneira de contornar isso é usar o
yes
comando:fonte
yes
comando. Hilário. E um dia eu posso usá-lo.Como algumas das outras respostas afirmaram, você provavelmente usa um algum lugar apelido que mapeia
cp
paracp -i
ou algo similar. Você pode executar um comando sem nenhum alias, precedendo-o com uma barra invertida. No seu caso, tenteA barra invertida desabilitará temporariamente os apelidos que você chamou
cp
.fonte
cp
,\cp
invocará o comandocp
. Parece ser o equivalente à execuçãocommand cp
.Você provavelmente tem um alias em algum lugar, mapeando
cp
paracp -i
; porque com as configurações padrão,cp
não solicitará a substituição. Verifique seu.bashrc
, seu.profile
etc.Consulte cp manpage : Somente quando o
-i
parâmetro for especificado,cp
na verdade, será solicitado antes da substituição.Você pode verificar isso através do
alias
comando:Para definir o alias, use:
fonte
Como outras respostas afirmaram, isso pode acontecer se
cp
for um alias decp -i
.Você pode anexar um
\
antes docp
comando para usá-lo sem alias.fonte
Por padrão,
cp
tem aliase paracp -i
. Você pode verificá-lo, digitaralias
e pode ver alguns como:Para resolver esse problema, basta usar o
/bin/cp /from /to
comandocp /from /to
fonte
você pode usar este comando também:
cp -ru /zzz/zzz/* /xxx/xxx
ele atualizaria seu arquivo existente com o mais novo.
fonte
cp
geralmente é um alias como estese tiver certeza de que deseja fazer a substituição, use o seguinte:
fonte
Eu achei isto
Fonte: /superuser/358843/how-to-replace-all-the-contents-from-one-folder-with-another-one/358851
fonte
Então, eu me deparo muito com isso porque mantenho o alias do cp
cp -iv
e achei um truque interessante. Acontece que, enquanto-i
e-n
tanto cancelar directivas sobrescrever anteriores,-f
não. No entanto, se você usá--nf
lo, adiciona a capacidade de limpar o arquivo-i
. Assim:Muito legal né? / necropost
fonte
também funciona.
fonte
Outra maneira de chamar o comando sem o alias é usar o
command
built-in no bash.command cp -rf /zzz/zzz/*
fonte
-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
fonte
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.
fonte
Simplesmente usei unalias para remover o alias "cp -i", depois faça a cópia e, em seguida, defina o alias. :
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
fonte
Não é
cp -i
. Se você não deseja ser solicitado para confirmação, écp -n
; por exemplo:Ou no caso de diretórios / pastas é:
fonte
cp -i
pelo 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-n
vai evitar uma substituição.