Como copiar ou mover arquivos sem ser solicitado a substituir?

8

O que eu tentei:

root@host [/home1]# cp -f hello /home3
cp: omitting directory `hello'
root@host [/home1]# cp -rf hello /home3
cp: overwrite `/home3/hello/.buildpath'? y
cp: overwrite `/home3/hello/.bash_logout'? y
cp: overwrite `/home3/hello/.project'? ^C

Eles sempre me perguntam se eu quero substituir. Usar mv também não funciona. Então, o que eu deveria fazer?

Outras coisas que tentei:

root@host [/home1]# cp -rf hello /home3
cp: overwrite `/home3/hello/.buildpath'? y
cp: overwrite `/home3/hello/.bash_logout'? y
cp: overwrite `/home3/hello/.project'? ^C
root@host [/home1]# cp -force hello /home3
cp: invalid option -- 'o'
Try `cp --help' for more information.
root@host [/home1]# cp --remove-destination hello /home4
cp: omitting directory `hello'
root@host [/home1]# cp --remove-destination hello /home3
cp: omitting directory `hello'
root@host [/home1]# cp --remove-destination -r hello /home3
cp: overwrite `/home3/hello/.buildpath'? ^C
root@host [/home1]#
user4951
fonte
2
Você poderia dar a saída de alias cp?
Raphael Ahrens
2
Além disso, type cpassim como ls -lem um dos arquivos de destino, pode fornecer informações úteis.
a CVn
cp é cópia. Ok, pode ser um apelido. Então, qual é o comando?
user4951

Respostas:

13

cpparece ser alias a algo que está causando problemas ou é uma função. Você pode remover o alias / função:

unalias cp
unset -f cp

Se você preferir substituí-lo agora, use o commandcomando para substituir qualquer definição de alias / função:

command cp [...]

Se você preferir removê-lo totalmente, provavelmente precisará procurar nos arquivos de inicialização do bash.

Chris Down
fonte
3
\cptambém evitará o alias.
sendmoreinfo
Sim, você está correto which cp => alias cp='cp -i; /bin/cp. Obrigado Amazon!
Gerry
8

Para forçar a substituição sem perguntar, você deve usar o comando mv e a opção "-f", use man para ver as opções.

homem mv:

   -f, --force
          do not prompt before overwriting

Exemplo:

mv -f test.tmp test.txt
sinkmanu
fonte
1

Tente cp -rv / sourcefileordirectory / Destinationfolder

Rockhound
fonte
Isso vai funcionar? O que significa -rv?
precisa saber é o seguinte
-rvsignifica recursivo e detalhado. Portanto, isso deve copiar os arquivos e subpastas e gerar o progresso para o terminal.
JNat
1

Você provavelmente tem um alias para cp. Você pode substituir esse alias fazendo:

\cp -f hello /home3

Isso tem a vantagem de não modificar a configuração dos aliases, pois a substitui apenas nesta chamada.

niglesias
fonte
0

Você pode usar yes, que é projetado para esse tipo de coisa. Ele imprimirá automaticamente ye responderá a estas solicitações para você:

yes | cp -f hello /home3
Deji Kadri
fonte
0

basta executar alias cp=cpe ele substituirá o alvo sem perguntar nesta sessão. Se você deseja que ele seja armazenado como comportamento padrão, armazene-o no seu ~/.bashrc.

user2516278
fonte