Как ввести / начать новую строку в терминале bash?

11

Я заметил, что некоторые примеры bash for loop распределены по нескольким строкам в примерах

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

(например, здесь http://www.cyberciti.biz/faq/bash-for-loop/ ) Как ввести новую строку в терминале bash (я использую putty)? Когда я нажимаю ввод в конце строки, система выполняет его.

giorgio79
источник
1
Также bashвы можете использовать комбинацию клавиш, Ctrl + x + eчтобы открыть содержимое командной строки в редакторе, таком как vim, где вы можете работать с ним легче, когда вы закончите, вы можете выйти из редактора и команда будет запущена.
СЛМ
Соответствующий ответ: unix.stackexchange.com/questions/232912/…
Кусалананда

Ответы:

28

Когда вы нажимаете Enterв конце:

for VARIABLE in file1 file2 file3

Оболочка не может ничего выполнить, так как этот forцикл не завершен. Таким образом, вместо этого он будет печатать другое приглашение, $PS2приглашение (обычно >), пока вы не введете закрытие done.

Однако после >отображения вы не можете вернуться к редактированию первой строки.

Кроме того, вместо того, чтобы печатать Enter, вы можете напечатать Ctrl-VCtrl-J. Таким образом, символ новой строки (он же ^J) вводятся без текущего буфера быть принят , а затем вы можете вернуться к редактированию первой строки позже.

В zsh, вы можете нажать Alt-Enterили, EscEnterчтобы вставить символ новой строки, не принимая текущий буфер. Чтобы получить такое же поведение bash, вы можете добавить к своему ~/.inputrc:

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

( \026будучи ^Vперсонажем).

Стефан Шазелас
источник
Ctrl-Jначать и Ctrl-Dзакончить, в конечном итоге хорошо работает для меня.
DuckMaestro