Como inserir / iniciar uma nova linha no terminal bash?


11

Percebo que algumas amostras de amostras para loops estão espalhadas por várias linhas em exemplos

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

(por exemplo, aqui http://www.cyberciti.biz/faq/bash-for-loop/ ) Como insiro uma nova linha no terminal bash (uso massa de vidraceiro)? Quando pressiono enter no final de uma linha, o sistema a executa.


1
Também bashé possível usar a combinação de teclado Ctrl + x + epara abrir o conteúdo do prompt de comando em um editor como o vim, onde você pode trabalhar com mais facilidade. Quando terminar, você pode sair do editor e o comando será executado.
slm

Respostas:


28

Quando você pressiona Enterno final de:

for VARIABLE in file1 file2 file3

O shell não pode executar nada, pois esse forloop não está concluído. Então, em vez disso, ele imprimirá um prompt diferente, o $PS2prompt (geralmente >), até você inserir o fechamento done.

No entanto, após a >exibição, você não pode voltar para editar a primeira linha.

Como alternativa, em vez de digitar Enter, você pode digitar Ctrl-VCtrl-J. Dessa forma, o caractere de nova linha (aka ^J) é inserido sem que o buffer atual seja aceito e você pode voltar a editar a primeira linha posteriormente.

Em zsh, você pode pressionar Alt-Enterou EscEnterpara inserir um caractere de nova linha sem aceitar o buffer atual. Para obter o mesmo comportamento bash, você pode adicionar ao seu ~/.inputrc:

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

( \026sendo o ^Vpersonagem).


Ctrl-Jcomeçar e Ctrl-Dterminar acabou funcionando bem para mim.
DuckMaestro
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.