Sie sollten man bash auf Ihrem System durchlesen , insbesondere den Abschnitt über Readline , da dies der interaktive Eingabemechanismus von bash ist. Das Bash-Handbuch auf gnu.org enthält einen schönen Abschnitt über die Befehlszeilenbearbeitung , mit dessen Hilfe einige Lücken geschlossen werden können.
Standardmäßig können Sie diese verwenden, um sich in der Befehlszeile zu bewegen (hier nur einige; eine vollständige Liste finden Sie unter dem Link):
- Ctrl+ aspringt an den Zeilenanfang (oder Homeabhängig von den Terminaleinstellungen)
- Ctrl+ ebewegt sich an das Ende der Zeile (oder End...)
- Meta+ fbewegt ein "Wort" vorwärts
- Meta+ bbewegt ein "Wort" zurück
Sie können diese verwenden, um Text aus einer Zeile zu "töten" (auch "ausschneiden") :
- Ctrl+ ktötet ("schneidet") Text von der aktuellen Cursorposition bis zum Zeilenende
- Ctrl+ yyanks ("fügt") den zuletzt getöteten Text in den Puffer am Cursor ein
Sie können diese also kombinieren, um einen Teil einer Befehlszeile auszuwählen, die Sie wiederholen möchten, töten und dann bis zum Ende Ihres nächsten Befehls einfügen.
Lassen Sie uns nun die History-Erweiterung von bash betrachten, damit es noch mehr Spaß macht . Dies ist, !!
was Studer in seiner Antwort erwähnt . Die Verlaufserweiterung gliedert sich in Ereignisbezeichner , Wortbezeichner und Modifizierer .
Event- Bezeichner sehen so aus (siehe auch hier die Links für die vollständige Liste):
!
- Startet eine Historiensubstitution
!n
- der n-te Befehl in der Bash-History-Liste für eine ganze Zahl n (funktioniert auch für Negative)
!!
- der vorhergehende Befehl; gleichwertig!-1
!string
- Der letzte Befehl, der mit string beginnt
Wortbezeichner wählen bestimmte Teile aus einem Ereignis aus. Verwenden Sie :
diese Option , um das Ereignis vom Wortbezeichner zu trennen. Wörter werden beginnend am Zeilenanfang von 0 an nummeriert und durch einzelne Leerzeichen getrennt in die aktuelle Zeile eingefügt.
$
- bezeichnet das letzte Argument (zB !!:$
ist das letzte Argument des letzten Befehls; kann abgekürzt werden !$
)
n
- bezeichnet das n-te Wort (zB !str:2
ist das 2. Argument des letzten Befehls beginnend mit str ; !!:0
ist der Befehl des letzten Befehls)
Wenn Ihr letzter Befehl also ausgeführt wird mkdir /some/really/long/path
, um Ihrem Beispiel !!
nachzugehen, wird dieser Befehl erneut ausgeführt. Aber Sie möchten cd
stattdessen in diesen Pfad einsteigen:
$ cd !$
Nehmen wir nun an, Sie führen einige andere Befehle aus und möchten dann wieder auf diesen Pfad verweisen. Wenn dies der letzte mkdir- Befehl war, den Sie ausgeführt haben, können Sie diesen Pfad wiederholen:
$ tar czf ~/foo.tgz !mkdir:$