如何查看bash历史中的时间戳?

rɑː*_*dʒɑ 324 command-line bash environment-variables history timestamp

有什么办法可以从 bash 历史记录中查看命令是在什么时间执行的?我们可以看到订单,但有什么办法我也能得到时间吗?

底线:Bash 历史中的执行时间

Mit*_*tch 404

Ctrl+ Alt+T打开下面的命令的终端,然后运行之一:

HISTTIMEFORMAT="%d/%m/%y %T "  # for e.g. “29/02/99 23:59:59”
HISTTIMEFORMAT="%F %T "        # for e.g. “1999-02-29 23:59:59”
Run Code Online (Sandbox Code Playgroud)

要使当前用户的更改永久运行:

echo 'HISTTIMEFORMAT="%d/%m/%y %T "' >> ~/.bashrc  # or respectively
echo 'HISTTIMEFORMAT="%F %T "' >> ~/.bashrc
source ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

要测试效果,请运行:

history
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅man bashLinux 的 Bash 命令行的 AZ 索引

对于设置之前 运行的命令,当前时间将保存为时间戳。设置后运行的命令将保存正确的时间戳。HISTTIMEFORMATHISTTIMEFORMAT

  • 请注意,这将 [仅记录**新**历史项目的时间戳](http://unix.stackexchange.com/questions/87740/histt​​imeformat-does-not-show-correct-date-and-time-for- history),在为会话设置`HISTTIMEFORMAT`之后,即你不能追溯使用它。这里的一些答案给人的印象是 history 命令会立即显示带时间戳的条目 (91认同)
  • @Jamil:对于遵循 ISO 标准的人,日期部分是“%y-%m-%d”;) (20认同)
  • @Gauthier - 实际上,只需将 %F 用于 ISO 日期;-) http://man7.org/linux/man-pages/man3/strftime.3.html (14认同)
  • 奇怪的是,这个 _did_ 回顾起来似乎对我有用 - 在我显式设置这个环境变量之前,我能够看到历史项目的时间戳。那可能是因为 `HISTTIMEFORMAT` 之前被设置为一个空字符串,或者类似的东西? (4认同)
  • 只是给 zsh 用户的一个说明 - 与许多内置程序不同,它不镜像 bash。请参阅:http://unix.stackexchange.com/questions/103398/datetime-stamp-when-running-history-command-in-zsh-shell (2认同)
  • 它可追溯地显示**当前会话**的正确时间戳。对于较旧的会话,似乎显示会话的登录时间或类似的内容。 (2认同)

Avi*_*Raj 92

开放端子Ctrl+ Alt+T和运行,

HISTTIMEFORMAT="%d/%m/%y %T "
Run Code Online (Sandbox Code Playgroud)

然后,

history
Run Code Online (Sandbox Code Playgroud)

要使更改永久化,请按照以下步骤操作,

gedit ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

您需要将以下行添加到 .bashrc 文件中,然后保存它,

export HISTTIMEFORMAT="%d/%m/%y %T "
Run Code Online (Sandbox Code Playgroud)

运行以下命令来获取 .bashrc 文件,

source ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

在那之后运行history命令。

在此处输入图片说明

来源http : //www.cyberciti.biz/faq/unix-linux-bash-history-display-date-time/


Den*_*ker 23

是的,您可以:如果您设置了$HISTTIMEFORMAT.bash-history则会正确地加上时间戳。这对现有.bash-history内容没有帮助,但在未来会有所帮助。

  • 更正上一篇文章:设置 HISTTIMEFORMAT 可以显示时间戳……甚至存在。我最喜欢的是:HISTTIMEFORMAT='%F %T ' 因为你来自哪个国家并不重要......每个人都知道现在是什么时间。:) (6认同)
  • 我设置了 $HISTTIMEFORMAT 并且我什至在这个集合的命令之前就得到了今天的时间。 (5认同)
  • @ user491029“......甚至存在”。这是事实,但具有误导性。至少在 ubuntu 14.04 上,一旦我设置了 HISTTIMEFORMAT,它确实开始显示所有历史条目的时间戳,但看起来当前会话之前运行的任何命令的时间戳都是当前会话的登录时间戳。 (2认同)

小智 16

更改HISTIMEFORMAT对我来说不起作用,因为我正在使用 zsh。

如果你想让它与 zsh 一起工作,你只需输入: history -i

  • zsh:1,bash:0 (5认同)