Wie kann ich eine neue Zeile im Bash-Terminal eingeben / starten?

10

Ich stelle fest, dass einige Beispiel-Bashs für Schleifen in Beispielen über mehrere Zeilen verteilt sind

for VARIABLE in file1 file2 file3
do
    command1 on $VARIABLE
    command2
    commandN
done

(zB hier http://www.cyberciti.biz/faq/bash-for-loop/ ) Wie gebe ich eine neue Zeile in das Bash-Terminal ein (ich benutze Kitt)? Wenn ich am Ende einer Zeile die Eingabetaste drücke, führt das System sie aus.

giorgio79
quelle
1
Auch in bashSie die Tastenkombination verwenden können , Ctrl + x + eum den Inhalt des Befehls zu öffnen Aufforderung in einem Editor wie Vim , wo man auf sie leichter arbeiten können, wenn Sie fertig sind Sie den Editor verlassen können und der Befehl ausgeführt wird.
slm
Verwandte Antwort: unix.stackexchange.com/questions/232912/…
Kusalananda

Antworten:

26

Wenn Sie Enteram Ende von drücken :

for VARIABLE in file1 file2 file3

Die Shell kann nichts ausführen, da diese forSchleife nicht beendet ist. Stattdessen wird eine andere Eingabeaufforderung gedruckt, die $PS2Eingabeaufforderung (im Allgemeinen >), bis Sie den Abschluss eingeben done.

Nach der >Anzeige können Sie jedoch nicht mehr zur ersten Zeile zurückkehren.

Anstatt zu Entertippen, können Sie alternativ auch tippen Ctrl-VCtrl-J. Auf diese Weise wird das Zeilenumbruchzeichen (auch bekannt als ^J) eingegeben, ohne dass der aktuelle Puffer akzeptiert wird , und Sie können später zur ersten Zeile zurückkehren.

In zshkönnen Sie drücken Alt-Enteroder EscEnterein Zeilenumbruchzeichen einfügen, ohne den aktuellen Puffer zu akzeptieren. Um das gleiche Verhalten zu basherzielen, können Sie Folgendes hinzufügen ~/.inputrc:

"\e\C-m": "\026\n"

( \026ist der ^VCharakter).

Stéphane Chazelas
quelle