Bash历史记录显示每个命令的日期和时间

时间:2020-01-09 10:45:53  来源:igfitidea点击:

在Linux,MacOS或者类似Unix的操作系统下,如何显示带有日期和时间的Shell命令历史记录?
如何在运行在Linux或者类似Unix的系统上的bash history命令中查看日期和时间戳?

bash shell提供对命令历史记录(先前执行的命令列表)的访问。

HISTSIZE变量的值用作要保存在历史记录列表中的命令数。
如果设置了" HISTTIMEFORMAT",则将与每个历史记录条目关联的时间戳信息写入历史记录文件,并用历史记录注释字符标记。
在本教程中我们学习了在Linux或者类似Unix的系统上运行history命令时,如何显示带有日期和时间的bash历史记录。

Bash历史记录显示每个命令的日期和时间

默认情况下,history命令将显示如下输出:

$ history

输出示例:

1994  ls S*.pdf
1995  ls -lh S*.pdf
1996  xdg-open Statement_Jun\ 2016.pdf 
1997  xdg-open System_01Jun2016_30Jun2016_0133*.pdf
1998  ssh [email protected]
1999  gpass
2000  history

上面的命令不会显示bash历史记录中命令的执行时间。
要解决此问题,请创建一个名为HISTTIMEFORMAT的shell变量。

如何在Bash历史记录中查看时间戳

如下定义名为HISTTIMEFORMAT的环境变量:

$ HISTTIMEFORMAT="%d/%m/%y %T "

或者添加到您的~/.bash_profile文件中,执行:

$ echo 'export HISTTIMEFORMAT="%d/%m/%y %T "' >> ~/.bash_profile

其中:

  • %d
  • %m
  • %y
  • %T时间

使用source命令将HISTTIMEFORMAT从文件加载到当前的shell脚本或者命令提示符中:

$ . ~/.bash_profile

或者

$ source ~/.bash_profile

如何按日期和时间检索Linux或者Unix bash命令行历史记录

现在,要查看历史记录,请执行:

$ history

输出示例:

....
..
  986  11/03/10 04:31:36 memcached-tool  10.10.28.22:11211 stats
  987  11/03/10 04:31:36 w
  988  11/03/10 04:31:37 iostat 
  989  11/03/10 04:31:37 top
  990  11/03/10 04:31:37 at
  991  11/03/10 04:31:38 atop
  992  11/03/10 04:31:40 collectl 
  993  11/03/10 04:31:41 grep CPU /proc/cpuinfo 
  994  11/03/10 04:31:45 vmstat 3 100
  995  11/03/10 04:31:55 sar -W -f /var/log/sa/sa12
....
..