タイムスタンプ付きのbash履歴


14

Bash $ HISTFILEに記録されたコマンドのタイムスタンプを保持したいのですが、可能ですか?

man bash情報源として使用してセットアップすることはできませんでした。

私の他のオプションは次のとおりです。

function thebanana() {
  local -r -a bash_commands=(
    "ls"
    # ... more coconut commands
  )
  for bash_command in "${bash_commands[@]}"; do
    printf "${bash_command}"
    printf ":"
  done
}
export HISTFILE=banana
export HISTIGNORE="$(thebanana)"
export HISTSIZE=999999
export HISTFILESIZE=999999999
export HISTCONTROL=ignoredups:erasedups

私はOS X Mountain Lion(ため息)にいると言及すべきでした。uname -a私に与えます:

Darwin CoconutMac.local 12.2.0 Darwin Kernel Version 12.2.0: Sat Aug 25 00:48:52 PDT 2012; root:xnu-2050.18.24~1/RELEASE_X86_64 x86_64

そしてecho $BASH_VERSION私に与えます:

3.2.48(1)-release

これを追加してみました:

export HISTTIMEFORMAT='%b %d %I:%M:%S %p '

そして、この種類のタイムスタンプをコマンドにプレフィックスするだけです:

#1349057791

変数(echo $HISTTIMEFORMAT)をエコーバックしてみてください。正しい値があります。

面白い!

これをデバッグするために.profileを完全に削除しました。それでも面白いタイムスタンプのみ:

#1349058320

これをさらにトラブルシューティングする方法がわかりません... :(

解決策:組み込みの履歴ではなく、$ HISTFILEを直接読み取るスクリプトを使用していたため、エポックベースのタイムスタンプ(1970年1月1日の協定世界時(UTC)からの秒数)が日付書式文字列を使用して翻訳されていませんでした。平凡なものhistoryは問題なく動作します。代わりにそれを使用します。


2
設定してみましたHISTTIMEFORMATか?
jw013

おそらくstrftime形式が間違っています。マニュアルページに少なくともいくつかの例が含まれていれば役立ちます。+%Y-%m-%d%H-%M-%S?
Robottinosino

回答:


14

はい、これを入れて~/.bashrcください:

export HISTTIMEFORMAT='%F %T '

次に、次のコマンドを実行します。

. ~/.bashrc
history

次のようになります。

 (...)
 5200  2012-09-30 23:55:37 find -printf '%Ts %f\n'
 5201  2012-10-01 00:00:58 ls
 5202  2012-10-01 00:03:45 cd
 (...)

出力の説明:

  • 最初の列は一意です id
  • 2番目は日付、3番目は時間
  • 最新はコマンドラインです

3
いいえ、OSXでは動作しません。:(問題は問題です。奇妙なOSです
。– Robottinosino

しましたかsource ~/.bashrc
ジルケノー

私は間違いなくやった。「何か」を実行しています:コマンドの前にコメント行を追加し、数値のタイムスタンプを付けます:#1349057149
Robottinosino

1
@Robottinosinoはい、コメント行は予想される形式です。フォーマットされた時間でコマンドを表示するには、history組み込みコマンドを使用します。履歴ファイルを直接見ないでください。
-jw013

1
HISTTIMEFORMATを使用して履歴ファイルにタイムスタンプを記録することは可能ですか?私はhistoryコマンドを決して使用せず、代わりにテキストエディターを使用して、探しているコマンドを見つけます。
なくなって
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.