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.