Divide uma linha de comandos de prompt existente em algumas linhas

8

Eu entendo que posso digitar \ enter no final de uma linha de comando bash para continuar esse comando em outra linha. Mas como dividir uma linha de comando prompt - que já foi totalmente digitado - em dois?

Por exemplo, como posso quebrar essa linha antes de then sem ter que cortar o restante e digitar tudo de novo?

$ if true; then ls; fi
    
por n.r. 17.06.2013 / 17:51

3 respostas

4

Um caractere newline é LF (feed de linha), a.k.a. Control-J. Se você pressionar Ctrl + J , ele executará o comando accept-line , igual à tecla Retornar . Para inserir um caractere LF literal, pressione Ctrl + V Ctrl + J . O comando Ctrl + v ( quoted-insert ) insere o próximo caractere literalmente. Assim, para dividir uma linha, você pode inserir \ Ctrl + V .

Se você fizer isso com frequência, poderá criar uma macro:

bind '"\e\C-j": "\\C-v\C-j\C-b\C-b"'
    
por 18.06.2013 / 00:40
6

Você pode usar edit-and-execute-command , geralmente mapeado para Ctrl + x + e , para abrir o comando atual em um editor . Ao sair do editor, o comando será executado.

    
por 17.06.2013 / 18:03
2

Nota - esta resposta específica para vi e vim

set -o vi    # edit commands using vi
VISUAL=/usr/bin/vim

Para editar a linha digitada atual, clique em ESC (para entrar no modo de comando vi ou vim ) e digite v ou vi .

Observe que todos os comandos de edição do vi / vim funcionam. por exemplo.

  • ESC + A coloca no final da linha atual.
  • ESC + 0 coloca o cursor no início da linha.
por 17.06.2013 / 18:24