Copia su file esistenti senza conferma?


18

Ho bisogno di copiare e sovrascrivere una grande quantità di file, ho usato il seguente comando:

# cp -Rf * ../

Ma poi ogni volta che esiste un file con lo stesso nome nella cartella di destinazione ottengo questa domanda:

cp: overwrite `../ibdata1'? 

Il problema è che ho circa 200 file che verranno sovrascritti e non penso che premere Y then Enter200 volte sia il modo giusto per farlo.

Quindi, qual è la strada giusta per quello?

Risposte:


38

Puoi farlo yes | cp -rf myxx, o se lo fai come root - il tuo .bashrc o .profile ha un alias di cp in cp -i, la maggior parte dei sistemi moderni lo fa con i profili di root.

È possibile bypassare temporaneamente un alias e utilizzare la versione non alias di un comando anteponendolo a \, ad esempio \ cp qualunque


4
+1 per indicare come bypassare un alias. Tentato a -1 per la soluzione di forza bruta.
Hennes,

5
+! per la yesfunzione pipe - molto utile!
Andrew Newby,

14

Ti rendi conto che RHEL e CentOS hanno provato a proteggere gli utenti alle prime armi impostando alias per l'utente root per impedire la sovrascrittura e l'eliminazione accidentale dei file?

alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'

L' -iinterruttore è ciò che richiede conferma quando si modificano o rimuovono file esistenti. Poiché l'espansione dell'alias avviene prima dell'esecuzione del comando, anche l'uso --force -f dell'opzione richiederà ancora la conferma.

È possibile rimuovere l'alias in modo permanente modificando il /root/.bashrcfile, rimuovere l'alias per la durata di una sessione con unalias cp o per un singolo comando utilizzare uno di:

  • usa il percorso completo /bin/cp
  • usa le virgolette "cp"o 'cp'intorno al comando
  • usa la parola chiave comando es command cp
  • sfuggire al comando \cp
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.