如何手动保存终端历史记录?

我的理解是终端退出时更新历史文件。 但有时我的计算机崩溃了,终端没有干净地退出,然后我从历史记录中丢失了那些烦人的命令。 如何让它立即刷新,以便即使我的计算机崩溃,条目仍然存在? 目前我正在使用这种解决方法,但我觉得应该有更好的方法。

我在Ubuntu 12.10上使用gnome-terminal。

您从超级用户站点提供的链接中的答案不一定被视为history命令的默认行为的“变通办法”。 bash shell有一些开箱即用的默认行为。

我强烈推荐阅读如何避免丢失任何历史记录? 解释这些history修改正在做什么。 此外,还有一些合理的问题需要注意,为什么这不是history命令的默认行为。

  • 性能 – 由于您使用history -a保存每个窗口中的每个命令,因此.bash_history文件可能会变得非常大并且需要更多资源来加载bash shell。 这可能导致启动时间更长(对于终端会话,而不是整个系统启动本身)。

  • 组织 – (来自上面的文章) “同时交互式shell(对于给定用户)的历史命令将交织在一起。因此,历史记录不是保证顺序的命令列表,因为它们是在单个shell中执行的。”

如果你担心进一步固定bash shell和。 bash_history文件通过审核,看看这篇文章: 如何记录历史记录或“安全”bash反对删除历史记录?

有时(例如系统不稳定或电源故障),我发现以下命令很有用。

~/.bashrc添加到~/.bashrc文件中:

 unset HISTFILESIZE HISTSIZE=3000 PROMPT_COMMAND="history -a" export HISTSIZE PROMPT_COMMAND shopt -s histappend 

请务必使用命令source ~/.bashrc来获取.bashrc文件

对“如何手动保存终端历史记录?”问题的最简单,有效的答案:

 history -a 

也可以考虑切换到zsh,它具有setopt inc_append_history (“在执行之前保存每个命令”)。

这个问题也是相关的: 是否有可能立即写入.bash_history?

要手动将bash历史记录保存到文件:

 history -w ~/history.txt vim ~/history.txt 

它将历史记录导出到名为history.txt的文件中。 然后,您可以使用自己喜欢的编辑器查看它。

答案复制自http://tech.karbassi.com/2007/01/14/view-and-change-bash-history/