どういうわけか私の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