zsh 기록은 이전 명령의 현재 시간을 표시합니다.

zsh 기록은 이전 명령의 현재 시간을 표시합니다.

어떻게든 내 zsh 기록에 아래와 같이 잘못된 타임스탬프가 표시됩니다.

❯ history -E 1 | tail -20
 6047  31.12.2019 15:08  babel-node
 6048  31.12.2019 15:08  node -v
 6049  31.12.2019 15:08  git diff
 6050  31.12.2019 15:08  rm package-lock.json
 6051  31.12.2019 15:08  yarn update
 6052  31.12.2019 15:08  yarn
 6053  31.12.2019 15:08  rm yarn.lock
 6054  31.12.2019 15:08  yarn install
 6055  31.12.2019 15:08  yarn serve
 6056  31.12.2019 15:08  exit
 6058  31.12.2019 15:00  bin/rails s
 6059  31.12.2019 15:00  cd ../my_project
 6060  31.12.2019 15:00  bin/rails c
 6062  31.12.2019 15:03  man history
 6063  31.12.2019 15:03  vi ~/.bash_history
 6064  31.12.2019 15:03  vi ~/.zsh_history
 6065  31.12.2019 15:04  zsh -f
 6066  31.12.2019 15:06  fc -li 100
 6067  31.12.2019 15:08  history -E 1 | tail -100

15:08최신 명령을 제외하고 타임스탬프가 지정된 모든 명령은 history어제 이전에 실행되었습니다. 명령이 실행될 때 마다 history이전 명령의 타임스탬프가 새로 고쳐집니다.

과거 데이터를 지우고 싶지만 같은 오류가 발생하고 싶지 않습니다. 이 오류의 원인과 이를 방지하는 방법을 아는 사람이 있습니까?

나는 zsh 5.3 (x86_64-apple-darwin18.0)그것을 사용하고 있습니다 iTerm2.

변하기 쉬운

이것은 내 역사 종속 변수입니다.

❯ env | grep HIST

❯ typeset | grep HIST
HISTCHARS='!^#'
integer 10 readonly HISTCMD=6119
HISTFILE=/Users/ironsand/.zsh_history
integer 10 HISTSIZE=10000
integer 10 SAVEHIST=10000

답변1

EXTENDED_HISTORY에서 쉘 옵션을 설정 하지 않으면 zsh저장된 기록 이벤트는 $HISTFILE타임스탬프 없이 저장됩니다.

를 사용하면 history -E 1기록 이벤트가 메모리 기록의 처음부터 끝까지 타임스탬프(특정 방식으로 형식 지정)와 함께 인쇄됩니다.

읽은 기록 항목에는 타임스탬프가 없으므로 $HISTFILE명령이 실행된 시간에 해당하는 타임스탬프가 할당됩니다.history

각 기록 이벤트의 타임스탬프를 저장하려면 EXTENDED_HISTORY셸 옵션을 활성화하세요. 향후 모든 대화식 zsh셸 세션 에 대해 이 작업을 수행하려면 $ZDOTDIR/.zshrc파일을 수정하고 추가하십시오.

setopt EXTENDED_HISTORY

관련 정보