o que faz o extended_history no zsh?

1

Eu vi a opção extended_history e vi ela sendo usada como em Histórico por diretório em zsh mas não entendeu o que o extended_history realmente faz?

Que informações. se tornaria disponível em zsh_history, o que de outra forma não ocorreria se essa opção não estivesse configurada.

De link , ele fala sobre -

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>’. 

Mas não vejo nenhum benefício, pelo menos, durante a execução do comando history -

 shirish@debian ~ % history | grep tail -5
      601* exit
      602* history
      603* exit
      604  cd
      605  cat ~/.zsh/.zshrc
      606   tail -5 history

É assim que meu ~/.zsh/.zshrc está configurado -

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

Eu não vi nenhuma diferença depois de definir a opção ou retirá-la, sem diferença significativa.

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

Como pode ser visto, não parece haver nenhuma diferença.

% zsh --version
zsh 5.4.2 (x86_64-debian-linux-gnu)
    
por shirish 11.01.2018 / 10:35

1 resposta

1

A saída de history -E será sempre a mesma, independentemente da opção EXTENDED_HISTORY . A duração do comando é armazenada diretamente no arquivo de histórico (basta examinar o arquivo para ver os valores).

No entanto, outra pegadinha é que existem algumas opções que irão substituir esse comportamento. Você pode testar para ver se está funcionando, executando um comando como sleep 3 , que deve resultar em uma entrada como esta:

pol@host ~ $ sleep 3
pol@host ~ $ tail -1 ${HISTFILE}
: 1530663493:3;sleep 3
pol@host ~ $ setopt | grep hist
extendedhistory
histignoredups
incappendhistorytime

Você pode ver que o valor "duration" é 3. Se não for 3, é provável que você tenha outro conjunto de opções que esteja impedindo que EXTENDED_HISTORY funcione. Estes incluem SHARED_HISTORY e INC_APPEND_HISTORY . Se você precisa do primeiro, então você está sem sorte. Para este último, há uma alternativa INC_APPEND_HISTORY_TIME que você pode usar se quiser também ter EXTENDED_HISTORY valores (como eu fiz acima).

    
por 04.07.2018 / 02:29