In Bash gibt es einige praktische Operatoren, mit denen Sie Teile des letzten Befehls wiederholen können:
!^
erweitert sich auf das erste Argument des vorherigen Befehls, z.$ echo one "two three" one two three $ echo !^ echo one one
!$
erweitert sich zum letzten Argument des vorherigen Befehls, z.$ echo one "two three" one two three $ echo !$ echo "two three" two three
!*
Erweitert sich auf alle Argumente des vorherigen Befehls, z.$ echo one "two three" one two three $ echo !* echo one "two three" one two three
(Soweit ich verstehe, sind diese syntaktischer Zucker für !!:^
, !!:$
und !!:*
sind, wobei !!
ein Ereignis Bezeichner , dass sich ausdehnt , um zum vorherigen Befehl, und ^
, $
und *
Wortbezeich sind, finden Sie in der Bash - Referenzhandbuch oder man bash
.)
Diese sind oft sehr praktisch. Mit Tastaturkürzeln wird es aber noch cooler:
Wenn Sie Alt+ .oder Alt+ drücken _, wird das letzte Argument des vorherigen Befehls in den aktuellen Befehl eingefügt, ähnlich als hätten Sie
!$
zu diesem Zeitpunkt geschrieben.Sie können auch Alt+ Ctrl+ ydrücken, um das erste Argument des vorherigen Befehls einzufügen, als hätten Sie
!^
zu diesem Zeitpunkt geschrieben.
(Siehe die GNU Readline Library oder info readline
.)
Ich bevorzuge die Tastaturkürzel gegenüber den Verlaufsoperatoren von Bash, da ich sehen kann, was ich einfüge, bevor ich den Befehl tatsächlich ausführe. Es scheint jedoch keine Verknüpfung zu geben, mit der ich alle Wörter des vorherigen Befehls einfügen kann, dh eines, das !*
die Aufgabe erfüllt . Zumindest konnte ich es nicht finden.
Gibt es so eine Abkürzung? Wenn nicht, ist es möglich, die Readline-Bibliothek so zu konfigurieren, dass eine hinzugefügt wird, und wie?
zsh
wenn Sie geben echo !*
und drücken Sie dann TAB, haben Sie den gewünschten Effekt. Im Allgemeinen erweitert TAB in der Readline alle erweiterbaren Elemente. Sehr praktisch; wahrscheinlich wird bash eine Konfiguration mit dem gleichen Effekt haben? @ Seth, ich denke, dies ist die Readline in Bash, nicht der Terminal-Emulator - aber nicht sicher.
man bash
(irgendwo in der Zeile 3030)
\e.
und \e_
sind der Readline-Funktion zugeordnet yank-last-arg
und \e\C-y
sind zugeordnet yank-nth-arg
. Leider scheint es keinen (einzelnen) Befehl zu geben, der mehrere vorherige Argumente gleichzeitig hinzufügt.