Posso alias 'editor!' em bashrc? [duplicado]

1
    

Esta pergunta já tem uma resposta aqui:

    
  •              Como posso 'alias sudo !!'?                                      5 respostas                          
  •     

Eu uso o emacs como editor na linha de comando (com alias a alias em='emacs -nw' ) e gostaria de poder criar um alias para !em abrir o arquivo mais recentemente aberto no emacs.

Eu tentei alias e='!em' , alias e='${!}em' , alias e='${!em}' , mas até agora não encontrei nada que funcione.

Encontrei algumas postagens relacionadas sobre o aliasing !! :

alias para um comando usando !! para lembrar o último comando

    
por galois 18.04.2017 / 16:09

2 respostas

1

Não acho que a expansão do histórico seja feita após a expansão dos aliases. Por isso, é necessário usar history -p para fazer isso explicitamente:

alias e='eval "$(history -p !em)"'

Embora isso não funcione neste caso, uma vez que os aliases não são expandidos após a substituição do comando. Mas as funções funcionam, então esses dois devem fazer isso:

em() { emacs -nw "$@"; }
e() { eval "$(history -p !em)"; }

O último pode ser um alias.

    
por 18.04.2017 / 19:05
0

Se você usar alias como descreveu, não tente criar um alias adicional para eles. ! invoca o mecanismo de histórico do shell, portanto o comando "! em" repetirá o uso mais recente do seu alias (que pode não ser o último arquivo realmente editado pelo emacs, no entanto.)

    
por 18.04.2017 / 21:03