!$
erweitert sich auf das letzte Wort Ihres vorherigen Befehls.
Sie könnten also Folgendes tun:
cat foo/is/a/very/long/path/to/bar.c
rm !$
oder:
git diff foo/bar.c
git checkout !$
Ihre Beispiele wiederholen zufällig nur das letzte Wort, also !$
funktionierte gut. Wenn Sie viele Argumente wiederholen möchten und nur das erste Wort ändern möchten, können Sie !*
verwenden , das auf alle Wörter des vorherigen Befehls außer dem nullten erweitert wird.
Siehe Abschnitt "HISTORIEERWEITERUNG" in bash
Manpage. Da gibt es viel Flexibilität.
Strg +a um zum Anfang der Zeile zu gehen, dann Alt +d um das erste Wort zu löschen.
Ich bin mir nicht sicher, ob es tatsächlich schneller wäre oder nicht, aber siehe diesen Artikel, insbesondere Punkt #.3:
- Ersetzen Sie eine Zeichenfolge aus dem vorherigen Befehl mit ^str1^str2^
Im folgenden Beispiel haben wir zuerst den Befehl ls ausgeführt, um eine Datei zu überprüfen. Später stellten wir fest, dass wir den Inhalt der Datei anzeigen möchten. Anstatt den gesamten Dateinamen erneut einzugeben, können wir einfach das „ls“ im vorherigen Befehl durch „cat“ ersetzen, wie unten gezeigt.
$ ls /etc/cron.daily/logrotate
$ ^ls^cat^
cat /etc/cron.daily/logrotate