2016-07-20 9 views
1

この記事に続くFish Shellの小さなスクリプト - How (and Why) to Log Your Entire Bash Historyを書きたいと思います。Fish Shell Auditing

制限:

  1. 私は魚にどのBASH PROMPT_COMMAND相当するものを見つけることができませんでした。
  2. 私はオー・マイ・フィッシュのカスタム・プロンプトを使用しています。私がカスタムの魚のプロンプトを修正する必要がなければ素晴らしいだろう。

答えて

8

これは間違った方法です。入力したすべてのコマンドをログに記録しますか?既にデフォルトでは、すべてのセッションの最後の256kの重複除外エントリが保持されますので、実際には何もする必要はありません。

あなたはPROMPT_COMMAND相当を望んでいた場合は、よく、(既にカスタマイズされている)fish_prompt機能がありますプロンプトを表示するために、そして何か他のものにプロンプ​​トがリスナーを定義することができますfish_promptイベントが、あります表示されるすべての時間を行うためにあなたには、いくつかの他のファイルにあなたが実行し、すべてのログを記録したい場合などの

function name --on-event fish_prompt 
    # do stuff 
end 

ため、fish_preexecイベントはとても

function log_commands --on-event fish_preexec 
    # fish_preexec functions receive the commandline as the argument (see `function --help`) 
    echo $argv >> ~/fish.log 
end 

が働くだろう、があります。

+1

これを拡張するために、魚はすでにあなたの履歴全体を記録しており、 'history'を使ってそれにアクセスすることができます。魚は複数のセッションを単一の履歴ファイルにマージします。これはbash履歴の主な制限です。 –

+0

回答をいただきありがとうございました。すべてのコマンド(重複を含む)をロギングする目的は、記事で述べたようなソートの監査を行い、 'fish_history'を置き換えないことです。 – neowulf33

関連する問題