Bash
帶有時間戳的 Bash 歷史記錄
我想在我的 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
工作正常,我會用它來代替。
是的,把它放進去
~/.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 (...)
輸出說明:
- 第一個 col 是唯一的
id
- 第二個是日期,第三個是小時
- 最新的是你的命令行