` のエイリアスを付けてもいいですか?` を bashrc に記述しますか?

` のエイリアスを付けてもいいですか?` を bashrc に記述しますか?

私はコマンドラインで emacs をエディタとして使用しており ( でエイリアス化)、 のエイリアスを作成して、emacs で最後に開いたファイルを開くことalias em='emacs -nw'ができるようにしたいと考えています。!em

alias e='!em'、、を試してみましたがalias e='${!}em'alias e='${!em}'今のところうまくいくものは見つかりません。

エイリアシングに関する関連投稿をいくつか見つけました!!:

!! を使用して最後のコマンドを呼び出すコマンドのエイリアス

答え1

エイリアスを展開した後に履歴展開は行われないと思うので、history -p明示的に行うには を使用する必要があります。

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

ただし、この場合もコマンド置換後にエイリアスが展開されないため、これは機能しません。ただし、関数は機能するため、次の 2 つで機能するはずです。

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

後者は別名である可能性があります。

答え2

説明したように em にエイリアスを設定する場合は、!em に追加のエイリアスを作成しないでください。! はシェルの履歴メカニズムを呼び出すため、コマンド "!em" はエイリアスの最新の使用を繰り返します (ただし、これは emacs によって実際に編集された最後のファイルではない可能性があります)。

関連情報