次のコードスニペットを使用して、失敗したすべてのコマンド(戻りコード1)がzsh履歴に保存されないようにします。
zshaddhistory() { whence ${${(z)1}[1]} >| /dev/null || return 1 }
ただし、コマンドがエイリアスlsl
(エイリアスlsl = 'ls -l')の場合、失敗したコマンドはまだzsh履歴に挿入されます。
lsl whatever_folder_doesnt_exist
whatever_folder_doesnt_exist
存在せず、私はlsl whatever_folder_doesnt_exist
まだzshレコードでそれを観察します。
ここでは、戻りコードではないすべてのコマンドを除外したいと思います0
。どうすればいいですか?
ベストアンサー1
あなたはそれを使用することができますzsh-hist
プラグイン履歴から最後の項目を削除するフックを設定しますprecmd
(終了状態がゼロでない場合).
source path/to/zsh-hist.plugin.zsh
delete-failed-history() {
(( ? )) &&
hist -s d -1
}
autoload -Uz add-zsh-hook
add-zsh-hook precmd delete-failed-history
1
正しい終了状態のコマンドのみを削除するには、に(( ? ))
変更します(( ? == 1 ))
。