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を直接読み取るため、epochベースのタイムスタンプ(1970年1月1日協定世界時(UTC)以降の秒数)は日付形式の文字列を使用して変換されません。 。普通の古いものがhistory
見事に動作するので、代わりに使用します。
答え1
はい、次の項目に入力してください~/.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番目は時間
- 最新はコマンドラインです。