如何在 ~/.bash_history 文件中查看时间

如何在 ~/.bash_history 文件中查看时间

我在文件中添加了时间,所以现在当我执行以下命令~/.bashrc时它会显示时间:history

  376  04/10/19 20:39:52 sudo cat ~/.bash_history
  377  04/10/19 20:40:04 date
  378  07/10/19 10:13:29 echo 'HISTTIMEFORMAT="%d/%m/%y %T "' >> ~/.bashrc
  379  07/10/19 10:13:38 source ~/.bashrc
  380  07/10/19 10:13:54 history
  381  07/10/19 10:20:08 sudo vim /home/subir/.bash_history 
  382  07/10/19 10:20:29 sudo nano /home/subir/.bash_history 
  383  07/10/19 11:34:20 cd ..
  384  07/10/19 11:34:34 find | grep .bash_history
  385  07/10/19 11:34:48 cat ./subir/.bash_history 
  386  07/10/19 11:37:32 history

但是当此会话的数据被附加到~/.bash_history文件时,它会显示如下内容:

#1570201804
date
#1570423409
echo 'HISTTIMEFORMAT="%d/%m/%y %T "' >> ~/.bashrc
#1570423418
source ~/.bashrc
#1570423434
history
#1570423808
sudo vim /home/subir/.bash_history 
#1570423829
sudo nano /home/subir/.bash_history 

?后面的值是什么#。有人能帮我推断它的含义吗,或者告诉我一种获取~/.bash_history文件中时间戳的方法。

答案1

这是 Unix 时间戳/纪元时间 - 从 1970 年 1 月 1 日开始经过的秒数。

如果将其转换为日期时间,您将得到:

$ date -d @1570201804
Fri Oct  4 18:10:04 EAT 2019

在 UTC 中是这样的10/04/2019 @ 3:10pm (UTC),但由于我在东非,所以我们有 +3 的时差10/04/2019 @ 6:10pm (UTC)

我猜你的时区是 +5:30

答案2

解析包含时间戳的 .bash_history (awk)。

首先,我在换行符处剪切字段-F \\n并检查以 #epoch 开头的行。接下来,我在格式化纪元字符串之前$0 ~ /^#[0-9]+/修剪第一个字符。最后,我打印不带换行符的第一部分,以便我可以获取包含命令的下一行 并将它们打印在同一行上。substr($1,2)strftime("%d/%m/%y %T")printf "%5d %s "getline

awk -F \\n '{ if ($0 ~ /^#[0-9]+/) {printf "%5d  %s ", ++i, strftime("%d/%m/%y %T", substr($1,2)); getline; print $0 }}' ~/.bash_history

输出:

    1  07/10/19 14:46:09 echo a
    2  07/10/19 14:46:28 echo b
    3  07/10/19 14:46:39 echo c

相关内容