Extended_history 옵션을 보고 다음과 같이 사용하는 것을 보았습니다.zsh의 각 디렉토리 기록하지만 실제로 extend_history가 무엇을 하는지 이해하지 못하셨나요?
메시지가 무엇입니까? zsh_history에서 사용할 수 있습니다. 그렇지 않으면 이 옵션이 설정되지 않으면 사용할 수 없습니다.
~에서http://zsh.sourceforge.net/Doc/Release/Options.html#Options그 내용은——
EXTENDED_HISTORY <C>
Save each command’s beginning timestamp (in seconds since the epoch) and the duration (in seconds) to the history file. The format of this prefixed data is:
‘: <beginning time>:<elapsed seconds>;<command>’.
하지만 적어도 히스토리 명령을 실행할 때는 아무런 이점이 없습니다.
shirish@debian ~ % history | grep tail -5
601* exit
602* history
603* exit
604 cd
605 cat ~/.zsh/.zshrc
606 tail -5 history
이렇게 ~/.zsh/.zshrc
구성했어요 -
shirish@debian ~ % cat ~/.zsh/.zshrc
# Lines configured by zsh-newuser-install
HISTFILE=~/.zsh//.histfile
HISTSIZE=1000
SAVEHIST=100000
setopt inc_append_history autocd nomatch notify share_history extended_history
bindkey -e
# End of lines configured by zsh-newuser-install
# display how long all tasks over 10 seconds take
export REPORTTIME=10
# The following lines were added by compinstall
zstyle :compinstall filename '/home/shirish/.zsh//.zshrc'
autoload -Uz compinit promptinit
compinit
promptinit
# End of lines added by compinstall
prompt adam1
옵션을 설정하거나 옵션을 제거한 후에는 아무런 차이가 없으며 의미가 없습니다.
shirish@debian ~ % cat ~/.zsh/.zshrc | grep setopt
setopt inc_append_history autocd nomatch notify share_history extended_history
shirish@debian ~ % source ~/.zsh/.zshrc
shirish@debian ~ % history -E
337 11.1.2018 23:33 history | grep apg
338 11.1.2018 23:33 man apg
339 11.1.2018 23:33 cd
340 11.1.2018 23:33 apg -a 1 -M n -n 3 -m 20
341 11.1.2018 23:33 apg -a 1 -M SNCL -n 3 -m 20
342 11.1.2018 23:33 history
343 11.1.2018 23:33 history -E
344 11.1.2018 23:33 leafpad ~/.zsh/.zshrc
345 11.1.2018 23:33 cat ~/.zsh/.zshrc
346 11.1.2018 23:33 source ~/.zsh/.zshrc
347 11.1.2018 23:33 history -E
348 11.1.2018 23:33 exit
349 11.1.2018 23:33 history -E
350 11.1.2018 23:34 leafpad ~/.zsh/.zshrc
351 11.1.2018 23:35 cat ~/.zsh/.zshrc | grep setopt
352 11.1.2018 23:35 source ~/.zsh/.zshrc
shirish@debian ~ % leafpad ~/.zsh/.zshrc
shirish@debian ~ % source ~/.zsh/.zshrc
shirish@debian ~ % history -E
340 11.1.2018 23:33 apg -a 1 -M n -n 3 -m 20
341 11.1.2018 23:33 apg -a 1 -M SNCL -n 3 -m 20
342 11.1.2018 23:33 history
343 11.1.2018 23:33 history -E
344 11.1.2018 23:33 leafpad ~/.zsh/.zshrc
345 11.1.2018 23:33 cat ~/.zsh/.zshrc
346 11.1.2018 23:33 source ~/.zsh/.zshrc
347 11.1.2018 23:33 history -E
348 11.1.2018 23:33 exit
349 11.1.2018 23:33 history -E
350 11.1.2018 23:34 leafpad ~/.zsh/.zshrc
351 11.1.2018 23:35 cat ~/.zsh/.zshrc | grep setopt
352 11.1.2018 23:35 source ~/.zsh/.zshrc
353 11.1.2018 23:35 history -E
354 11.1.2018 23:36 leafpad ~/.zsh/.zshrc
355 11.1.2018 23:36 source ~/.zsh/.zshrc
shirish@debian ~ % cat ~/.zsh/.zshrc | grep setopt
setopt inc_append_history autocd nomatch notify share_history
보시다시피 별 차이는 없는 것 같습니다.
% zsh --version
zsh 5.4.2 (x86_64-debian-linux-gnu)
답변1
옵션에 관계없이 의 출력은 history -E
항상 동일합니다 EXTENDED_HISTORY
. 명령 기간은 기록 파일에 직접 저장됩니다(값을 보려면 파일을 확인하세요).
그러나 또 다른 문제는 이 동작을 재정의할 수 있는 옵션이 있다는 것입니다. sleep 3
다음과 같은 항목을 생성하는 유사한 명령을 실행하여 이것이 작동하는지 테스트할 수 있습니다 .
pol@host ~ $ sleep 3
pol@host ~ $ tail -1 ${HISTFILE}
: 1530663493:3;sleep 3
pol@host ~ $ setopt | grep hist
extendedhistory
histignoredups
incappendhistorytime
"Duration" 값이 3인 것을 볼 수 있습니다. 3이 아닌 경우 EXTENDED_HISTORY
작동을 방해하는 다른 옵션 세트가 있을 가능성이 높습니다. 여기에는 SHARED_HISTORY
및 가 포함됩니다 INC_APPEND_HISTORY
. 전자가 필요한 경우 운이 좋지 않습니다. 후자의 경우 위에서 언급한 대로 값도 INC_APPEND_HISTORY_TIME
갖고 싶다면 다른 대안이 있습니다.EXTENDED_HISTORY
답변2
이 답변을 참고하겠습니다https://unix.stackexchange.com/a/453336/277040약간 오해의 소지가 있습니다. 실제로 출력은체재state와 관계없이 동일하겠지만 history -E
Zsh 세션이 항상 이렇다면 EXTENDED_HISTORY
타임스탬프는 상대적으로 의미가 없게 됩니다. unsetopt EXTENDED_HISTORY
의 각 줄에는 HISTFILE
타임스탬프 정보가 없는 명령이 포함되므로 history -E
모두 동일한 시간( HISTFILE
특정 셸이 열리고 메모리로 읽혀진 시간)을 출력합니다.
예를 들어, ~/.zsh_history
과거에 다른 시간에 실행된 명령 목록이 있다고 가정해 보겠습니다.
echo 1
echo 3
echo 5
이 답변을 작성한 날 오후 5시 3분에 셸을 열면 history -E
출력은 다음과 같습니다.
1 24.6.2020 17:03 echo 1
2 24.6.2020 17:03 echo 3
3 24.6.2020 17:03 echo 5