`! 별칭을 지정할 수 있나요?` 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)"'

이 경우에도 작동하지 않습니다. 명령 대체 후에 별칭이 확장되지 않기 때문입니다. 하지만 함수는 작동하므로 다음 두 가지가 수행되어야 합니다.

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

후자는 별칭일 수 있습니다.

답변2

설명한 대로 em에 별칭을 지정했다면 !em에 대한 추가 별칭을 만들려고 시도해서는 안 됩니다. ! 쉘 히스토리 메커니즘을 호출하므로 "!em" 명령은 별칭의 가장 최근 사용을 반복합니다(그러나 실제로 emacs가 편집한 마지막 파일은 아닐 수도 있습니다).

관련 정보