如果您运行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
设置别名或函数(甚至脚本sed
)awk
从显示屏中出来。并且(至少在我必须提供的版本上,4.1.2 和 4.3.11)如果您编辑要#0
专门插入的文件,它显然会认为该文件无效并显示??
(两个问号)代替格式化的时间,这不是您所要求的,但对于政府工作来说可能足够接近。
为了节省时间(和错误),您可以使用以下命令自动进行此编辑
perl -ni.bak 'if /^#/ print $_.<> else print "#seconds".$/.$_' .bash_history