Як ввести / запустити новий рядок у терміналі bash?


11

Я помічаю, що деякі приклади bash для циклів розподілені по декількох рядках у прикладах

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

(наприклад, тут http://www.cyberciti.biz/faq/bash-for-loop/ ) Як ввести новий рядок у терміналі bash (я використовую шпаклівку)? Коли я натискаю Enter в кінці рядка, система виконує його.


1
Крім того, bashви можете використовувати комбінацію клавіатури, Ctrl + x + eщоб відкрити вміст командного рядка в такому редакторі, як vim, де ви можете працювати над ним легше, коли ви закінчите, ви можете вийти з редактора і команда запуститься.
slm

Відповідна відповідь: unix.stackexchange.com/questions/232912/…
Kusalananda

Відповіді:


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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.