時々私のzsh
録音が切り捨てられたことを発見し(または完全に失われているかもしれません)、バックアップから復元する必要があります。
たとえば、今日は次のようになります。
ls -lh ~/.zsh_history
-rw------- 1 stripe staff 32K 21 Feb 10:20 /Users/stripe/.zsh_history
しかし、数日前のバックアップでは次のようになります。
-rw-------@ 1 stripe staff 203K 17 Feb 22:36 /Volumes/Time Machine Backups/.../Users/stripe/.zsh_history
zsh
多くの履歴を保存するように設定したので、シェルが意図的にファイルを切り捨てるのに問題はありません。
unsetopt share_history
setopt inc_append_history
setopt hist_ignore_all_dups
HISTSIZE=500000
SAVEHIST=$HISTSIZE
他の人がこれを経験し、それを軽減する方法を見つけましたか?zsh
私が知らない春の大掃除機能はありますか?
ベストアンサー1
ZTE
さまざまな理由で、履歴ファイルが切り捨て、失われた、または消去される可能性があります。その理由は次のとおりです。
- zsh履歴ファイルの破損(シェルを開くときの停電/システムエラーのため、この場合はシステムエラー時に実行するようにfsckを設定する必要があります)
- Zsh設定ファイルがロードされていません(たとえば、
$HOME
env変数が定義されていない場合など) - サポートしていない歴史記録保管所の人zsh リセット履歴を作成できます
- 漂白剤などのクリーニングツール
- Zsh構成エラー
- シェル間の共有には
$HISTFILE
より厳しい制限があります$HISTSIZE
。たとえば、$HISTFILE
bashrcなしでzshでbashシェルを実行すると、サブシェルはzshから継承された変数を使用し、$HISTSIZE
bashrc変数に定義された変数を適用します。 - など。
ノート
過去に使用可能な設定オプション
HISTFILE="$HOME/.zsh_history"
HISTSIZE=500000
SAVEHIST=500000
setopt BANG_HIST # Treat the '!' character specially during expansion.
setopt EXTENDED_HISTORY # Write the history file in the ":start:elapsed;command" format.
setopt INC_APPEND_HISTORY # Write to the history file immediately, not when the shell exits.
setopt SHARE_HISTORY # Share history between all sessions.
setopt HIST_EXPIRE_DUPS_FIRST # Expire duplicate entries first when trimming history.
setopt HIST_IGNORE_DUPS # Don't record an entry that was just recorded again.
setopt HIST_IGNORE_ALL_DUPS # Delete old recorded entry if new entry is a duplicate.
setopt HIST_FIND_NO_DUPS # Do not display a line previously found.
setopt HIST_IGNORE_SPACE # Don't record an entry starting with a space.
setopt HIST_SAVE_NO_DUPS # Don't write duplicate entries in the history file.
setopt HIST_REDUCE_BLANKS # Remove superfluous blanks before recording entry.
setopt HIST_VERIFY # Don't execute immediately upon history expansion.
setopt HIST_BEEP # Beep when accessing nonexistent history.
回答
~/.zshrc
この場合は、次の設定を使用することをお勧めします(ファイルに設定)。
HISTFILE=/specify/a/fixed/and/different/location/.history
HISTSIZE=500000
SAVEHIST=500000
setopt appendhistory
setopt INC_APPEND_HISTORY
setopt SHARE_HISTORY
選ぶ
小さなスクリプトを使用して履歴ファイルのサイズを確認し、必要に応じてバックアップから復元できます(から~/.zshrc
)。
if [ /home/my/zsh/hist/file -lt 64000 ]; then
echo "History file is lower than 64 kbytes, restoring backup..."
cp -f /mybackup/histfile /home/my/zsh/hist/file
fi
リンク