3

私はよく .bash_history ファイルを調べて、プログラムをどのように実行したか、または使用した引数を正確に確認しています。問題は、私の履歴が非常に不完全に見えることです。数か月前に実行したことがわかるコマンドもあれば、昨日実行して存在しないコマンドもあります。問題は、私が ssh で頻繁に作業していることだと思います。多くの場合、きれいにログアウトせず、ラップトップがスリープ状態になるか、別の Wi-Fi ネットワークに移動すると切断されます。そのため、bash は終了時にのみ履歴ファイルに書き込むようです。これは正しいですか?すべてのコマンド、またはいくつかのコマンドごとに強制的に書き込む方法はありますか?

4

3 に答える 3

8

各プロンプトの前に保存した履歴を更新するには、に追加history -aします。PROMPT_COMMAND

PROMPT_COMMAND='history -a'

これはあなたの.bashrcファイルに入るはずです。

于 2013-02-25T20:11:40.430 に答える
3

または履歴をsqliteデータベースに書き込むオープンソースツールであるAdvanced Shell Historyをインストールできます。これは単純に に含めるよりも少し極端ですが、現在の作業ディレクトリ、コマンド終了コード、コマンドの開始時間と終了時間、セッションの開始時間と終了時間、tty なども記録します。bashzshhistory -aPROMPT_COMMAND

履歴データベースにクエリを実行する場合は、カスタム SQL クエリを作成して、バンドルされているash_queryツールで使用できるようにすることもできます。いくつかの便利なパッケージ済みクエリもありますが、私は SQL をよく知っているので、何かを探す必要がある場合は通常、データベースを開いて独自のクエリを作成します。

ただし、非常に便利なコマンドの 1 つは、現在の作業ディレクトリの履歴を確認することです。何かに取り組んでいるときに中断した場所を思い出すのに役立ちます。

vagrant@precise32:~$ ash_query -q CWD
session
    when                   what
1
    2014-08-27 17:13:07    ls -la
    2014-08-27 17:13:09    cd .ash
    2014-08-27 17:16:27    ls
    2014-08-27 17:16:33    rm -rf advanced-shell-history/
    2014-08-27 17:16:35    ls
    2014-08-27 17:16:37    less postinstall.sh
    2014-08-27 17:16:57    sudo reboot -n

そして、現在の作業ディレクトリ (およびその下のすべて) を使用した同じ履歴:

vagrant@precise32:~$ ash_query -q RCWD
session
    where
        when                   what
1
    /home/vagrant/advanced-shell-history
        2014-08-27 17:11:34    nano ~/.bashrc
        2014-08-27 17:12:54    source /usr/lib/advanced_shell_history/bash
        2014-08-27 17:12:57    source /usr/lib/advanced_shell_history/bash
        2014-08-27 17:13:05    cd
    /home/vagrant
        2014-08-27 17:13:07    ls -la
        2014-08-27 17:13:09    cd .ash
    /home/vagrant/.ash
        2014-08-27 17:13:10    ls
        2014-08-27 17:13:11    ls -l
        2014-08-27 17:13:16    sqlite3 history.db
        2014-08-27 17:13:43    ash_query
        2014-08-27 17:13:50    ash_query -Q
        2014-08-27 17:13:56    ash_query -q DEMO
        2014-08-27 17:14:39    ash_query -q ME
        2014-08-27 17:16:26    cd
    /home/vagrant
        2014-08-27 17:16:27    ls
        2014-08-27 17:16:33    rm -rf advanced-shell-history/
        2014-08-27 17:16:35    ls
        2014-08-27 17:16:37    less postinstall.sh
        2014-08-27 17:16:57    sudo reboot -n

FWIW - 私はプロジェクトの作成者でありメンテナーです。

于 2014-08-30T19:52:21.043 に答える