Rob*_*ino 15 osx bash command-history
我想在我的 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
Run Code Online (Sandbox Code Playgroud)
我应该提到我在 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
Run Code Online (Sandbox Code Playgroud)
并echo $BASH_VERSION
给我:
3.2.48(1)-release
Run Code Online (Sandbox Code Playgroud)
尝试添加这个:
export HISTTIMEFORMAT='%b %d %I:%M:%S %p '
Run Code Online (Sandbox Code Playgroud)
它只在命令前加上这种时间戳:
#1349057791
Run Code Online (Sandbox Code Playgroud)
我尝试回显变量 ( echo $HISTTIMEFORMAT
),它具有正确的值。
有趣的!
我什至完全删除了 .profile 来调试它。仍然只是有趣的时间戳:
#1349058320
Run Code Online (Sandbox Code Playgroud)
我不知道如何进一步解决这个问题... :(
解决方案:我使用的是直接读取 $HISTFILE 的脚本,而不是内置的历史记录,因此基于纪元的时间戳(自 1970 年 1 月 1 日协调世界时 (UTC) 以来的秒数)没有使用日期格式字符串进行翻译. 普通旧的history
工作正常,我会用它来代替。
Gil*_*not 16
是的,把它放在~/.bashrc
:
export HISTTIMEFORMAT='%F %T '
Run Code Online (Sandbox Code Playgroud)
然后,运行以下命令:
. ~/.bashrc
history
Run Code Online (Sandbox Code Playgroud)
它看起来像这样:
(...)
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
(...)
Run Code Online (Sandbox Code Playgroud)
输出说明:
id