失敗したコマンドを履歴に保存しませんか?

失敗したコマンドを履歴に保存しませんか?

次のコードスニペットを使用して、失敗したすべてのコマンド(戻りコード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 ))

おすすめ記事