come fermare cp: sovrascrivere './xxx'? richiesta


19

Come posso impedire al comando cp di richiedere di sovrascrivere. Voglio sovrascrivere tutti i file senza dover continuare a tornare al terminale. Poiché si tratta di file di grandi dimensioni e il completamento richiede alcuni minuti.

Ho provato a usare l'opzione -f. Mi chiede ancora se voglio sovrascrivere.

   -f, --force
          if an existing destination file cannot be opened, remove it and
          try again (redundant if the -n option is used)

cp -f /media/somedir/somefiles* .  
cp: overwrite `./somefilesxxx'? y

Risposte:


17

Oltre a chiamare /bin/cp, puoi effettuare una delle seguenti operazioni:

\cp -f ...
command cp -f ...

Tuttavia, sono d'accordo che non dovresti abituarti a usare un alias come cp -io rm -i- se ti siedi in una shell diversa, non avrai la rete di sicurezza da cui sei diventato dipendente.


1
A whereis cpmostrerà dove si trova il comando. Quindi sarai in grado di chiamare il comando reale invece dell'alias.
Anthony B,

12

Dopo aver visto questa soluzione. Ho potuto vedere che la caratteristica alias bashes stava causando i problemi. http://systembash.com/content/prompt-to-confirm-copy-even-with-cp-f/

which cp  
alias cp='cp -i'
/bin/cp
which cp | grep cp
alias cp='cp -i'
/bin/cp

Lui raccomanda

unalias cp

Voglio ancora mantenere l'alias, ma non voglio che si applichi a questa istanza. La mia soluzione è usare il binario con un percorso completo, in modo che la funzione alias bashes non prenda il sopravvento. Funziona abbastanza bene.

/bin/cp -f /media/somedir/somefiles* .  

4

Sfortunatamente su Linux il comando copia "cp" non ha un'opzione per rispondere automaticamente a questa domanda con una risposta "y" o "n". Esiste più di una soluzione a questo problema a seconda di ciò che si desidera fare. Una soluzione è utilizzare il comando "yes" di Unix. Questo comando genererà ripetutamente una stringa fino a quando non viene ucciso.

Se vogliamo sovrascrivere tutti i file nella directory di destinazione, è possibile utilizzare il comando "yes" per rispondere a tutte le domande con una "y". "y" è un valore predefinito, quindi non è necessario specificarlo.

yes | cp source/*.txt destination/.

Se vogliamo evitare di sovrascrivere uno dei file nella directory di destinazione, puoi usare il comando "yes" per rispondere a tutte le domande con un no "n".

yes n | cp source/*.txt destination/.

Utilizzare "man yes" per ulteriori informazioni sul comando "yes".

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.