带有时间戳的Bash历史记录


15

我想在我的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吗?
2012年

可能我把strftime格式弄错了。如果手册页至少包含几个示例,将有所帮助。+%Y-%m-%d%H-%M-%S?
Robottinosino 2012年

Answers:


15

是的,把它放在~/.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
  • 第二个是日期,第三个是小时
  • 最新是您的命令行

3
不,不工作的OSX .. :(习题这是个问题一个奇怪的OS。
Robottinosino

source ~/.bashrc
吉尔斯·奎诺

我绝对可以。它正在执行“操作”:在命令添加带有数字时间戳的注释行:#1349057149
Robottinosino 2012年

1
@Robottinosino是的,注释行是预期的格式。要显示具有格式化时间的history命令,请使用内置命令,不要直接查看历史文件。
2012年

1
使用HISTTIMEFORMAT是否可以在历史记录文件中记录时间戳?我从不使用该history命令,而是使用文本编辑器来查找所需的命令,并且拥有一个易于理解的日期引用会很好。
消失了
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.