별칭을 추가할 수 있어요!` 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가 실제로 편집한 마지막 파일이 아닐 수도 있습니다.)

관련 정보