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
。コマンド期間は履歴ファイルに直接保存されます(値を表示するにはファイルを確認してください)。
ただし、もう1つの問題は、この動作をオーバーライドするオプションがあることです。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