我在~/.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
文件中获取时间戳的方法。
那是 Unix Timestamp / Epoch time - 从 1970 年 1 月 1 日开始经过的秒数。
如果将其转换为日期时间,您将获得:
在 UTC 中,
10/04/2019 @ 3:10pm (UTC)
但由于我在东非,我们得到 +3 时差10/04/2019 @ 6:10pm (UTC)
我猜你的时区是 +5:30
解析包含时间戳 ( awk ) 的 .bash_history。
首先,我在换行符处剪切字段
-F \\n
并检查以 #epoch 开头的行$0 ~ /^#[0-9]+/
。接下来我substr($1,2)
在格式化纪元字符串之前修剪掉第一个字符strftime("%d/%m/%y %T")
。最后我打印没有换行符的第一部分,因此我可以获取包含命令printf "%5d %s "
的下一行 并将它们打印在同一行上。getline
输出: