Ich verstehe, dass ich \
enteram Ende einer bash
Befehlszeile eingeben kann, um diesen Befehl in einer anderen Zeile fortzusetzen. Aber wie kann ich eine Eingabeaufforderungsbefehlszeile - die bereits vollständig eingegeben wurde - in zwei Teile teilen ?
Wie kann ich beispielsweise diese Zeile kurz zuvor then
unterbrechen, ohne den Rest abschneiden und erneut eingeben zu müssen?
$ if true; then ls; fi
fc
Befehl an - er ist in fast allen Shells verfügbar.Antworten:
Ein Zeilenumbruchzeichen ist LF (Zeilenvorschub), auch bekannt als Control-J. Wenn Sie Ctrl+ drücken J, wird der Befehl
accept-line
wie bei der ReturnTaste ausgeführt. Um ein Literal-LF-Zeichen einzufügen, drücken Sie Ctrl+ V Ctrl+ J. Der Befehl Ctrl+ V(quoted-insert
) fügt das nächste Zeichen buchstäblich ein. Um eine Zeile zu teilen, können Sie \ Ctrl+ eingeben V.Wenn Sie dies häufig tun, können Sie daraus ein Makro machen:
quelle
Sie können den aktuellen Befehl in einem Editor verwenden
edit-and-execute-command
, der normalerweise Ctrl+ x+ zugeordnet eist . Beim Verlassen des Editors wird der Befehl ausgeführt.quelle
vim
habe meine wie folgt hinzugefügt :export EDITOR=vim
.:q!
oderZQ
aber ohne Erfolg.ggdG:wq
oder:%d|wq
usw.). Der Befehl bleibt im Verlauf (möglicherweise als Duplikat, wenn Sie ihn von einem früheren Eintrag abgerufen haben), wird jedoch nicht ausgeführt.Hinweis - Diese Antwort ist spezifisch für vi und vim
Um die aktuell eingegebene Zeile zu bearbeiten, drücken Sie
ESC
(um in den Befehls-vi
odervim
Befehlsmodus zu gelangen ) und geben Sie dannv
oder einvi
.Beachten Sie, dass alle vi / vim-Bearbeitungsbefehle funktionieren. z.B
ESC
+A
setzt an das Ende der aktuell eingegebenen Zeile.ESC
+0
setzt den Cursor an den Zeilenanfang.quelle
CTRL
+v
dannCTRL
+j
sollte es funktionieren, eine neue Zeile zu werfen.