我可以加别名`!` 在 bashrc 中?

我可以加别名`!` 在 bashrc 中?

我在命令行中使用 emacs 作为编辑器(别名为alias em='emacs -nw'),并且希望能够创建一个别名来!em打开最近在 emacs 中打开的文件。

我已经尝试过alias e='!em',,,但到目前为止找不到任何有效的方法alias e='${!}em'alias e='${!em}'

我发现了一些关于别名的相关帖子!!

使用 !! 的命令的别名调用最后一个命令

答案1

我不认为历史扩展是在扩展别名之后完成的,因此您需要使用history -p显式地执行此操作:

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

尽管在这种情况下这也不起作用,因为命令替换后别名不会扩展。但函数可以工作,所以这两个应该可以做到:

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

后者可能是别名。

答案2

如果您按照您的描述为 em 设置别名,那么您不应尝试为 !em 创建额外的别名。 !调用 shell 历史记录机制,因此命令“!em”将重复最近使用的别名(但是,这可能不是 emacs 实际编辑的最后一个文件。)

相关内容