No bash quero reeditar um comando multilinha (que invoquei anteriormente) com Ctrl-x Ctrl-e. Isso abrirá o vim (para mim) e me deixará digitar o comando. Agora com todos os recursos definidos ( ref ):
shopt -s cmdhist
shopt -s lithist
HISTTIMEFORMAT='%F %T '
ainda não funciona. Por exemplo, quando pressiono Ctrl-x Ctrl-e
para abrir o buffer de comando no vim e digito:
echo "Hello"
echo "World"
no editor de comando, salvar/executar, ele tratará cada linha como uma entrada de histórico separada! Isso fica aparente quando tento Ctrl-p
passar pelo histórico. No entanto, quero que eles se reúnam como uma entrada de histórico e também persistam isso no disco. Quando olho, .bash_history
vejo isso:
#1734086162
echo "Hello"
#1734086162
echo "World"
Isso significa que duas entradas separadas foram criadas. No entanto, eu queria isso:
#1734086162
echo "Hello"
echo "World"
Se eu adaptá-lo manualmente, funciona, posso então Ctrl-p
ir para a entrada e editá-la como um todo com Ctrl-x Ctrl-e
. Mas como salvá-lo como um comando multilinha automaticamente?
Minha versão bash é
GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)
Você precisa combinar seus comandos em um Comando Composto .
Por exemplo, no seu editor, use uma construção de agrupamento
E então você verá algo parecido
{ echo foo; echo bar; }
no seu histórico.Você também pode usar um operador lógico como
echo foo && echo bar