Come inserire / avviare una nuova linea nel terminale bash?


11

Ho notato che alcuni esempi di bash per loop sono distribuiti su più righe negli esempi

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

(es. qui http://www.cyberciti.biz/faq/bash-for-loop/ ) Come posso inserire una nuova riga nel terminale bash (io uso putty)? Quando premo invio alla fine di una riga, il sistema lo esegue.


1
Inoltre bashpuoi usare la combinazione di tastiera Ctrl + x + eper aprire il contenuto del prompt dei comandi in un editor come vim, dove puoi lavorarci più facilmente, quando hai finito puoi uscire dall'editor e il comando verrà eseguito.
slm

Risposte:


28

Quando si preme Enteralla fine di:

for VARIABLE in file1 file2 file3

La shell non può eseguire nulla poiché quel forciclo non è terminato. Quindi, invece, stamperà un prompt diverso, il $PS2prompt (generalmente >), fino a quando non si inserisce la chiusura done.

Tuttavia, dopo che >viene visualizzato, non è possibile tornare indietro per modificare la prima riga.

In alternativa, invece di digitare Enter, puoi digitare Ctrl-VCtrl-J. In questo modo, il carattere di nuova riga (aka ^J) viene inserito senza l' accettazione del buffer corrente , quindi è possibile tornare alla modifica della prima riga in un secondo momento.

In zsh, è possibile premere Alt-Entero EscEnterper inserire un carattere di nuova riga senza accettare il buffer corrente. Per ottenere lo stesso comportamento bash, puoi aggiungere al tuo ~/.inputrc:

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

( \026essendo il ^Vpersonaggio).


Ctrl-Jiniziare e, Ctrl-Dalla fine, ha funzionato bene per me.
DuckMaestro il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.