我可以別名`!` 在 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 實際編輯的最後一個檔案。)

相關內容