¿Cómo ingresar / iniciar una nueva línea en el terminal bash?

11

Noto que algunos ejemplos de bash para bucles se extienden en varias líneas en ejemplos

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

(por ejemplo, aquí http://www.cyberciti.biz/faq/bash-for-loop/ ) ¿Cómo ingreso una nueva línea en el terminal bash (uso masilla)? Cuando presiono enter al final de una línea, el sistema lo ejecuta.

giorgio79
fuente
1
También bashpuede usar la combinación de teclado Ctrl + x + epara abrir el contenido del símbolo del sistema en un editor como vim, donde puede trabajar más fácilmente; cuando haya terminado, puede salir del editor y el comando se ejecutará.
slm
Respuesta relacionada: unix.stackexchange.com/questions/232912/…
Kusalananda

Respuestas:

28

Cuando presionas Enteral final de:

for VARIABLE in file1 file2 file3

El shell no puede ejecutar nada ya que ese forciclo no está terminado. Entonces, en su lugar, imprimirá un aviso diferente, el $PS2aviso (generalmente >), hasta que ingrese el cierre done.

Sin embargo, una vez que >se muestra, no puede volver a editar la primera línea.

Alternativamente, en lugar de escribir Enter, puede escribir Ctrl-VCtrl-J. De esa manera, el carácter de nueva línea (aka ^J) se ingresa sin que se acepte el búfer actual , y luego puede volver a editar la primera línea más adelante.

En zsh, puede presionar Alt-Entero EscEnterpara insertar un carácter de nueva línea sin aceptar el búfer actual. Para obtener el mismo comportamiento bash, puede agregar a su ~/.inputrc:

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

( \026siendo el ^Vpersonaje).

Stéphane Chazelas
fuente
Ctrl-JPara empezar, y Ctrl-Dpara terminar, terminé funcionando bien para mí.
DuckMaestro