bash 文件的历史记录

bash 文件的历史记录

我正在运行 bash 文件来获取有关正在运行的系统进程的数据(即 netstat、syslog、arp 等)。除了历史之外,一切都很顺利。我正在尝试将历史记录保存到文本文件中

cp ~/. bash_history $path/filename.txt   

不幸的是,这并没有给我完整的历史。如果手动输入命令

history > /media/root/usb/filename 

我得到了完全不同的结果。我的目标是在一个 bash 文件下自动化整个过程,有没有办法做到这一点。另外,我希望有历史记录的日期和时间。

答案1

正如 @Jesse_b 所评论的,.bash_history包含除当前会话之外的所有先前 shell 会话的历史记录,可以通过命令进行检查history。因此,您必须首先通过以下方式刷新当前历史记录:

history -a

然后你可以将其复制到另一个文件:

cp ~/.bash_history $path/filename.txt   

要在每个历史条目前面加上时间戳,请设置 $HISTTIMEFORMAT 变量,例如

HISTTIMEFORMAT="%F %T: "

答案2

要获取历史记录中的日期和时间,请运行以下命令:

HISTTIMEFORMAT="%d/%m/%y %T "
echo 'export HISTTIMEFORMAT="%d/%m/%y %T "' >> ~/.bashrc
source ~/.bashrc
history

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

为什么这没有给我完整的历史?

参见 的回答@迈克尔-霍默

如果您想确保它们始终立即写入,您可以将该命令放入 PROMPT_COMMAND 变量中:

export PROMPT_COMMAND='history -a'

相关内容