!$
expanduje na poslední slovo vašeho předchozího příkazu.
Takže můžete udělat:
cat foo/is/a/very/long/path/to/bar.c
rm !$
nebo:
git diff foo/bar.c
git checkout !$
Vaše příklady náhodou opakovaly pouze poslední slovo, takže !$
fungovalo dobře. Pokud jste skutečně měli mnoho argumentů, které jste chtěli zopakovat, a chtěli jste pouze změnit první slovo, můžete použít !*
, který se rozšíří na všechna slova předchozího příkazu kromě nuly.
Viz část "ROZŠÍŘENÍ HISTORIE" v bash
manuálová stránka. Je zde velká flexibilita.
Ctrl +a přejděte na začátek řádku a stiskněte Alt +d pro smazání prvního slova.
Nejsem si jistý, zda by to bylo skutečně rychlejší nebo ne, ale viz tento článek, zejména bod #.3:
- Nahraďte řetězec z předchozího příkazu pomocí ^str1^str2^
V následujícím příkladu jsme nejprve provedli příkaz ls k ověření afile. Později jsme si uvědomili, že chceme zobrazit obsah souboru. Namísto opětovného psaní celého názvu souboru můžeme pouze nahradit „ls“ v předchozím příkazu „cat“, jak je uvedeno níže.
$ ls /etc/cron.daily/logrotate $ ^ls^cat^ cat /etc/cron.daily/logrotate