¿Puedo alias `!`en bashrc?

¿Puedo alias `!`en bashrc?

Utilizo emacs como editor en la línea de comandos (con alias alias em='emacs -nw') y me gustaría poder crear un alias para !emabrir el archivo abierto más recientemente en emacs.

Lo he probado alias e='!em', pero hasta ahora no encuentro nada que funcione.alias e='${!}em'alias e='${!em}'

Encontré algunas publicaciones relacionadas sobre alias !!:

alias para un comando usando !! para recordar el último comando

Respuesta1

No creo que la expansión del historial se realice después de expandir los alias, por lo que deberías usar history -ppara hacerlo explícitamente:

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

Aunque eso tampoco funciona en este caso, ya que los alias no se expanden después de la sustitución del comando. Pero las funciones funcionan, así que estas dos deberían hacerlo:

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

Este último podría ser un alias.

Respuesta2

Si les asigna un alias como lo describió, entonces no debe intentar crear un alias adicional para !em. ! invoca el mecanismo del historial del shell, por lo que el comando "!em" repetirá el uso más reciente de su alias (que, sin embargo, podría no ser el último archivo realmente editado por emacs).

información relacionada