我可以让历史记录不打印启用该选项之前运行的命令的任何时间戳吗?

我可以让历史记录不打印启用该选项之前运行的命令的任何时间戳吗?

如果您运行history,它会输出在我启用时间戳之前运行的命令之前的当前日期,无论如何我可以让它忽略它吗?

例如,如果我的.bash_history看起来像这样:

1  +2016-01-30 16:54:10 cd /tmp
2  +2016-01-30 16:54:10 wine *exe
3  +2016-01-30 16:54:10 grep...
4  +2016-01-30 16:54:10 sed.....
5  +2016-01-30 16:52:20 history

$HISTTIMEFORMAT我希望它不要输出命令 1-4 上的日期,因为这只是当前日期,并且在运行这些命令时我没有启用。

答案1

你的.bash_history文件看起来不是这样的,只是history显示而已。文件中的格式是#单独一行上的单个数字(自纪元以来的秒数)。对于没有这样的时间值的存储(并因此读取)的条目,显示显示当前 shell 读取历史记录的时间(通常是 shell 启动时),而不是实际的当前时间。

如果您编辑要插入的文件#以及每个没有实际值的条目之前的已知时间的数字,则可以为该(格式化的)时间#seconds设置别名或函数(甚至脚本sedawk从显示屏中出来。并且(至少在我必须提供的版本上,4.1.2 和 4.3.11)如果您编辑要#0专门插入的文件,它显然会认为该文件无效并显示??(两个问号)代替格式化的时间,这不是您所要求的,但对于政府工作来说可能足够接近。

为了节省时间(和错误),您可以使用以下命令自动进行此编辑

perl -ni.bak 'if /^#/ print $_.<> else print "#seconds".$/.$_' .bash_history

相关内容