我想保留 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
效果很好,我会用它来代替。
答案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
- 第二个是日期,第三个是小时
- 最新的是你的命令行