forza la copia quando -i è usato in alias bash


2

Ho un alias (come la maggior parte della gente, credo) che cp cp -iimpedisce la sovrascrittura.

Esiste un modo per "annullarlo" per forzare la sovrascrittura su una funzione di copia? cp -fnon funziona.


2
Avere questo tipo di alias dovrebbe essere considerato una cattiva abitudine; ti insegnerà a essere sciatto con i tuoi comandi, e poi un giorno sarai su un'altra macchina senza questi alias (o anche solo un sistema operativo appena installato in cui non hai ancora importato il tuo .bashrc) e farai un errore. Avrai anche l'abitudine di premere automaticamente 'y' in modo da non offrire molta protezione reale. Se vuoi davvero questo tipo di alias (e penso che sia inutile, ma a ciascuno il loro), almeno chiamalo in qualche modo diverso dal comando incorporato (chiamalo 'mycp' o qualcosa del genere).
evilsoup,

1
Sì, avere cpun alias per cp -iè cattivo, cattivo, cattivo! Per favore, non farlo. Tuttavia avere un alias per cp -iva benissimo (l'ho usato copyper anni) - semplicemente non chiamarlo cp.
hlovdal,

buona idea @hlovdal .. l'alias 'è venuto con la macchina' per ogni server che ho. Mi piace l'idea di rinominarlo
d -_- b

Risposte:


7

Esistono molti modi per farlo (presi da qui ):

  1. il percorso completo del comando: /bin/cp -f source_file dest_file

  2. sostituzione del comando: $(which cp) -f source_file dest_file

  3. il comando incorporato: command cp -f source_file dest_file

  4. virgolette doppie: "cp" -f source_file dest_file

  5. virgolette singole: 'cp' -f source_file dest_file

  6. una barra rovesciata: \cp -f source_file dest_file


2
basta notare: \ cp (in bash) ignorerà solo l'alias, NON una funzione con lo stesso nome. vale a dire:: alias ls='echo "aliased"' ; function ls { echo "function" ; } ; ls ; \ls ; command lsil primo (ls) mostrerà "alias", il secondo (\ ls) ignorerà solo l'alias e quindi mostrerà "funzione", e il terzo (comando ls) mostrerà l'output di ls regolare
Olivier Dulac

alias command=echo
Eviterei

Questa è una bella lista. Potresti ancheunalias cp
Beroe,

4

Il commandbuiltin sovrascrive gli alias e le definizioni delle funzioni, quindi command cp -f source_file dest_filefarà il trucco.


L'altra alternativa sarebbe quella di chiamare esplicitamente cp, cioè usare /bin/cp -f . . . . È possibile utilizzare which cpper determinare il percorso effettivo da utilizzare.
Ernie,
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.