cp -f non può sovrascrivere alias cp -i


8

Nel mio file /home/user/.bashrc, ho quegli alias per prevenire errori:

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

Se sono veramente sicuro di quello che sto facendo, posso sovrascrivere rme gli mvalias usando rm -fo mv -f, non mi chiederà se voglio davvero sovrascrivere i file.

Il problema è che non funziona per il cpcomando, utilizzando cp -fmi farà ancora una domanda.

È normale? Cosa devo fare per avere l' cp -ialias di default e poter usare cp -fanche il comando?

Sto usando Debian Wheezy 64 bit.

Risposte:


9

Mentre -fsignifica forza su tutti loro, cpperché significa forza provando a rimuovere prima la destinazione se la destinazione non può essere aggiornata .

Per mve rm, -fsolo sostituisce -i. Ma perché cp, cambia il comportamento dell'utilità, -fnon è l'opposto -iin quel caso, cp -i -fha senso e significa, se il bersaglio esiste, chiedi all'utente e se non può essere ignorato, rimuovilo prima .

Anche per mve rm, aggiungere -fnon equivale a rimuovere -iquando si tratta di messaggi di avviso e di errore inviati all'utente. Ad esempio rm non-existent-file, segnalerebbe un errore mentre rm -i -f non-existent-filenon lo sarebbe.

Come già accennato, per rimuovere l'effetto di -i, anziché aggiungere -f, è necessario disabilitare l'alias usando una delle soluzioni fornite.


"Per mv e cp, -f ha la precedenza su -i." Intendi mv e rm penso. Grazie per avermi spiegato, ora mi è molto chiaro!
Bapt

11

Dando cp -f, l'opzione si somma semplicemente con l'opzione esistente.

Cioè, se hai un alias cp='cp -i', la parola cp viene sostituita nel comando cp -f, quindi ottieni cp -i -f file1 file2.

Per sostituire l'alias:

\cp -f file1 file2

La barra rovesciata prima del comando disabiliterà l'alias. È possibile utilizzare command cpanziché \cpper leggibilità.


Ho fatto un errore nel mio post, quando ho parlato di cp -r, intendevo cp -f, è corretto. La tua soluzione con una barra rovesciata funziona, grazie! Ma ancora non capisco perché la barra rovesciata non sia necessaria per il comando mv o rm, l'alias è direttamente disabilitato con mv -f e rm -f!
Bapt
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.