!$
si espande fino all'ultima parola del comando precedente.
Quindi potresti fare:
cat foo/is/a/very/long/path/to/bar.c
rm !$
oppure:
git diff foo/bar.c
git checkout !$
I tuoi esempi ripetono solo l'ultima parola, quindi !$
ha funzionato bene. Se in realtà avevi molti argomenti che volevi ripetere e volevi solo cambiare la prima parola, potresti usare !*
, che si espande a tutte le parole del comando precedente tranne lo zero.
Vedi la sezione "ESPANSIONE DELLA STORIA" del bash
pagina man. C'è molta flessibilità lì.
Ctrl +a per andare all'inizio della riga, quindi Alt +d per eliminare la prima parola.
Non sono sicuro se sarebbe effettivamente più veloce o meno, ma guarda questo articolo, in particolare il punto #.3:
- Sostituisci una stringa dal comando precedente usando ^str1^str2^
Nell'esempio seguente, per prima cosa abbiamo eseguito il comando ls per verificare un file. Successivamente ci siamo resi conto che vogliamo visualizzare il contenuto del file. Invece di digitare nuovamente l'intero nome del file, possiamo semplicemente sostituire "ls" nel comando precedente con "cat" come mostrato di seguito.
$ ls /etc/cron.daily/logrotate $ ^ls^cat^ cat /etc/cron.daily/logrotate