No bash shell, como inserir a linha anterior dentro da linha atual?

2

No bash, como expandir a linha de comando !! durante a edição interativa do comando dentro do shell? Estou trabalhando no modo de edição vi .

Ao digitar uma nova linha de comando, quero apresentar a linha anterior e expandi-la.

Eu gostaria que a expansão ocorresse antes de eu executar o comando.

    
por Yehonathan Sharvit 20.02.2012 / 11:58

3 respostas

1

Você pode tentar usar Alt - ^ no modo emacs (é semelhante a Ctrl-Alt-e , mas deve ser feito apenas expansão da história).

Se não funcionar para você (por exemplo, não há uma ligação padrão para expansão de histórico no modo vi), você pode adicionar a ligação manualmente colocando

bind '"\e^": history-expand-line'

em algum lugar em seu .bashrc ou

"\e^": history-expand-line

no seu .inputrc

UPDATE. Par comentários:

  1. se estiver tudo bem, você deve ser capaz de pressionar Alt - ^ para substituir qualquer seqüência !! pelo seu comando anterior, por exemplo echo "!!" se tornaria echo "previous_command with args"
  2. se não funcionar como desejado, você pode verificar a ligação com bind -P | grep history-expand (ele deve retornar algo como history-expand-line can be found on "\e^" )
por 20.02.2012 / 13:06
1

Isso pode funcionar para você:

echo abc
!! 

Agora digite Ctrl-Alt-e ao mesmo tempo (ou no jargão do emacs C-M-e).

echo abc
    
por 20.02.2012 / 12:41
1

Isso faria com que M-, insira a linha anterior no modo emacs:

"\e,": "!!\e^"

Você também pode criar espaçadores como !! vinculando-os a magic-space :

" ": magic-space
    
por 15.09.2012 / 08:11

Tags