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