로 시작하는 마지막 터미널 명령을 실행하는 별칭을 zsh에 만들고 싶습니다 node
. 를 사용하여 해당 명령을 실행할 수 있지만 !?node
을 사용하여 별칭을 만들 수는 없습니다 alias N='!?node'
. 이 별칭을 어떻게 만들 수 있나요?
답변1
기록 확장은 명령줄에서 수행됩니다.~ 전에별칭 확장. 따라서 별칭에 기록 확장을 추가하는 것은 작동하지 않습니다. 별칭이 확장된 후에는 더 이상 기록 확장이 수행되지 않기 때문입니다.
반면에 매개변수 확장이 수행됩니다.~ 후에별칭 확장. 따라서 다음을 대신 사용할 수 있습니다.
alias N='"${(z)history[(r)node *]}"'
(r)
그 이후에 패턴이 처음으로 나타나는 것을 얻습니다.. 이 경우 가장 최근의 일치 기록 항목을 검색합니다.$history
항상 최신 것부터 오래된 것 순으로 정렬됩니다..(z)
문자열을 코드로 구문 분석하고 결과 쉘 단어를 반환합니다.. 그렇지 않으면 전체 확장이 단일 단어로 처리됩니다.- 공간을 올바르게 구문 분석하려면 큰따옴표가 필요 합니다
"
."
그렇지 않으면 단어 구분 기호로 처리되어 구문 오류가 발생합니다. - 매개변수 확장이 선언 시 즉시 수행되는 것을 방지하려면
'
작은따옴표가 필요 합니다.'