history:让历史命令显示执行时间

Linux 下用 history 查看历史命令时,默认只显示序号和命令本身,看不到这条命令是什么时候执行的,排查问题时很不方便。其实只要设置 HISTTIMEFORMAT 环境变量,就能让 history 显示每条命令的执行时间。

临时生效

只对当前会话生效,直接执行:

export HISTTIMEFORMAT="%F %T "

之后再使用 history 命令,每条命令前面就会带上”年-月-日 时:分:秒”:

$ history 500 | grep get_charge_by_month
 1002  2014-09-02 10:17:34 history -500|grep get_charge_by_month
 1005  2014-09-02 10:26:41 history 500|grep get_charge_by_month

HISTTIMEFORMAT 的格式与 strftime 一致:

  • %F:完整日期,等价于 %Y-%m-%d
  • %T:完整时间,等价于 %H:%M:%S

永久生效

想让每次登录都自动生效,把上面这条 export 写入 ~/.bashrc 即可:

echo 'export HISTTIMEFORMAT="%F %T "' >> ~/.bashrc
source ~/.bashrc

注意 echo 后面用的是单引号,这样 %F %T 会原样写入文件,不会被当前 Shell 提前展开。

两点说明

  • 设置之后,history当前会话之后执行的命令会记录准确时间;更早的历史命令没有时间戳,显示的时间是 bash 写入历史时的时间(往往是设置变量那一刻),看起来会”全部相同”,属于正常现象。
  • 时间戳记录在历史文件 ~/.bash_history 中(以注释形式 #<时间戳> 存储),换机器拷贝历史文件时格式仍然兼容。

   转载规则


《history:让历史命令显示执行时间》 吴杭沉 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
获取 Shell 脚本所在目录的绝对路径 获取 Shell 脚本所在目录的绝对路径
写脚本时经常需要引用脚本同目录下的其他文件(配置、日志目录、依赖脚本等)。这时很多人的第一反应是用 pwd 或者 $0,但这两种做法都有陷阱。总结一下,最可靠的做法其实就是一条命令: root_path=$(cd $(dirname ${B
2020-11-15
下一篇 
Shell 快捷键速查 Shell 快捷键速查
在终端里熟练使用快捷键,能大幅减少手在键盘和鼠标之间来回移动的时间。本文按功能对 Bash 中常用的 Ctrl 快捷键进行分组整理,方便速查。特别提醒:Ctrl+D 在不同语境下有两种完全不同的含义,文末会单独说明。 光标移动 快捷键
2020-11-01
  目录