我正在运行 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
为什么这没有给我完整的历史?
参见 的回答@迈克尔-霍默
如果您想确保它们始终立即写入,您可以将该命令放入 PROMPT_COMMAND 变量中:
export PROMPT_COMMAND='history -a'