histórico do comando bash editando várias linhas

4

Durante muitos anos, usei ksh . Eu gosto da possibilidade de usar Esc v no histórico de comandos para chamar o editor "vi". Se este comando no histórico foi distribuído por várias linhas - por exemplo, por causa de um loop while - "vi" mostra este histórico também em muitas linhas. Com esse recurso, é fácil escrever instruções complexas sem gravar a entrada em um arquivo.

Anos atrás, mudei para bash . Tem a mesma possibilidade com o atalho padrão Ctrl - X Ctrl - E . A pequena diferença é que bash está mesclando todas as linhas em uma linha longa delimitada por um ponto-e-vírgula. A sintaxe ainda está correta, mas perdemos a legibilidade.

Então, o que estou fazendo, estou chamando o ksh, se eu vir os comandos se tornarem complexos.

Existe uma maneira de configurar bash de maneira a não mesclar as linhas do histórico e agir como ksh está fazendo isso?

Qualquer ajuda é bem-vinda.

    
por hans 03.02.2017 / 20:42

1 resposta

4

Uso:

shopt -s lithist

lithist
If set, and the cmdhist option is enabled, multi-line commands are saved to the history with embedded newlines rather than using semicolon separators where possible.

Suspeito que a razão pela qual isso não está ativado por padrão é porque as pessoas geralmente usam comandos como history | grep something para encontrar números de entrada de histórico. Se uma entrada de histórico for dividida em várias linhas, a linha que corresponder a grep nem sempre conterá o número de entrada.

    
por 04.02.2017 / 00:31