終了コードが0の場合にのみコマンドライン履歴を保存する

終了コードが0の場合にのみコマンドライン履歴を保存する

~/.bash_historyタイプミスのあるコマンドまで、私が実行したすべてのコマンドを確認して表示できました。成功したコマンド(終了コード0など)のみを保存する方法はありますか?

注:私はbashとzshを使っています。

ベストアンサー1

~/.bashrcファイルに保存

good_history(){ 
  exit_status=$?
  if ((!exit_status)); then 
     history 1 >> history.txt
  fi
}

export PROMPT_COMMAND="good_history"

~/.bashrcソースを実行した後source ~/.bashrc

  • 上記の構成は関数定義です。function_name() { command_goes_here; }

  • 終了したコマンドのみが0ファイルに保存されます。history.txt

  • シェルに関する限り、終了状態は成功で0、そうでなければ失敗です。

  • 組み込み変数は、 $?対話式であるかどうかにかかわらず、最後に実行されたコマンドの最後の終了状態を維持します。

  • 数学的文脈では、0bashでは失敗し、1theでは成功する(( ))ため、bang文字の使用を無効にします!help test

  • >>その項目が指す場所(この場合はファイル)に追加されます。

  • PROMPT_COMMANDシェルセッションで実行したい変数の bash マニュアルのセクションを参照してください。PAGER='less +/^[[:space:]]*PROMPT_COMMAND' man bash

  • 必要な場合も必要ない場合もありますが、ファイルにどのような設定があるかexportわからないので、そこにあります。shellrc

  • 誰かがそれを使用するのを待っています。zsh

おすすめ記事