실패한 명령을 기록에 저장하지 않습니까?

실패한 명령을 기록에 저장하지 않습니까?

다음 코드 조각을 사용하여 실패한 모든 명령(반환 코드 1)이 zsh 기록에 저장되지 않도록 제외합니다.

 zshaddhistory() { whence ${${(z)1}[1]} >| /dev/null || return 1 }

그러나 명령이 별칭 lsl(별칭 lsl='ls -l')인 경우 실패한 명령은 여전히 ​​zsh 기록에 삽입됩니다.

lsl whatever_folder_doesnt_exist

whatever_folder_doesnt_exist존재하지 않으며 나는 lsl whatever_folder_doesnt_exist여전히 zsh 기록에서 그것을 관찰합니다.

여기서는 반환 코드가 이 아닌 모든 명령을 제외하고 싶습니다 0. 어떻게 해야 합니까?

답변1

당신은 그것을 사용할 수 있습니다zsh-hist플러그인기록에서 마지막 항목을 제거하는 후크를 설정합니다 precmd(종료 상태가 0이 아닌 경우).

source path/to/zsh-hist.plugin.zsh
delete-failed-history() {
  (( ? )) && 
    hist -s d -1
}
autoload -Uz add-zsh-hook
add-zsh-hook precmd delete-failed-history

1정확한 종료 상태의 명령 만 제거하려면 (( ? ))으로 변경하십시오 (( ? == 1 )).

관련 정보