Come si usa 'cp' per sovrascrivere i file?

9

Usando uno script di shell o un terminale, come sovrascrivere i file che potrebbero essere presenti o meno. Ho guardato la pagina man per cp, ha detto usa l'argomento -f per forzare la sovrascrittura. Ma non fa niente.

$ cp -f /path/to/source/file.txt /path/to/target

O esiste un'altra opzione per sovrascrivere i file utilizzando gli strumenti di riga di comando incorporati in OS X?

    
posta rogerFernand 06.12.2013 - 02:18
fonte

4 risposte

12

Sono perplesso sul motivo per cui cp si comporta in questo modo se non è coinvolto alcun alias. Tuttavia, esiste un'utilità rapida, sporca e pericolosa, fornita per questa esatta situazione: yes . Puoi usarlo per convogliare un flusso continuo di affermazioni in qualsiasi comando che ti dia prompt di conferma (puoi usarlo per inviare qualsiasi testo, ma il default è "y").

yes | cp foo bar eseguirà il comando cp e ignorerà tutti i prompt di conferma.

    
risposta data 13.12.2013 - 01:47
fonte
8

Potrebbe essere causato da un alias del comando.

Per chiamare direttamente cp puoi utilizzare /bin/cp src dest

    
risposta data 06.12.2013 - 16:06
fonte
2
rm foo/bar/destination && cp source foo/bar/destination

Prima rimuovi ( rm ) la destinazione, quindi se hai successo ( && ) fai la tua copia. Quando rimuovi una cartella, ricorda di aggiungere -r a rm ( rm -r ).

    
risposta data 26.05.2017 - 04:00
fonte
1

Avevo anche un alias che incasinava -f, chiama cp direttamente da / bin e tutto va bene, avere un alias che previene sovrascritture accidentali / rimuove di default è abbastanza buono, quindi meglio non rimuoverlo.

.# alias

alias cp='cp -i'

come già detto, il flag -i superceedes -f, che non consente il comando di sotto di eseguire come previsto.

.# /bin/cp -fauv src dst

    
risposta data 22.10.2014 - 15:37
fonte

Leggi altre domande sui tag