zsh에서 bash의 `history -p`를 대체합니까?

zsh에서 bash의 `history -p`를 대체합니까?

bash에서 history -p역사는 주장을 확장합니다. zsh의 대안은 무엇입니까?

답변1

나는 아무것도 모르지만 histverify히스토리 연산자가 포함된 줄에서 Enter 키를 누르면 명령을 실행하지 않고 편집기 버퍼에서 확장이 실행되도록 히스토리 확장 동작을 변경하는 옵션을 참조하십시오.

$ setopt 히스토리 확인
$ 에코 !! Enter
$ 에코 setopt histverifyEnter
setopt 기록 확인

또한 (역사적 확장은 70년대 후반부터입니다) 역사적 수정자(예: , , ...) zsh를 매개변수 확장( ...) 에도 적용할 수 있습니다 .csh:h:r:A$var:h

그리고 전체 기록은 특별한 연관 배열을 통해 접근할 수 있습니다 $history.

이 연관 배열의 키는 히스토리 번호이며, 순서가 정의되지 않은 일반 연관 배열과 달리 $history[@]키의 숫자 값을 기준으로 내림차순으로 정렬됩니다.

${history:0:1}마지막 역사적 항목에 대해서도 마찬가지입니다. 따라서 매개변수 스프레드 연산자를 사용하면 과거 스프레드 연산자와 동일한 결과를 얻을 수 있습니다. 예를 들면 !$:h다음과 같습니다 .${${(z)history:0:1}[-1]:h}

답변2

Bash에서는 다음을 수행하여 명령을 확장할 수 있습니다.

history -p !23 

따라서 23에 ls -l이 있으면 반환은 다음과 같습니다.

ls 
-l 

zsh에서는 다음을 수행하여 유사한(그러나 동일하지는 않은) 동작을 재현할 수 있습니다.

history 23 23 | xargs -n1 | tail -n+2

관련 정보