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

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

据我所知,历史文件会在终端退出时更新。但有时我的电脑崩溃了,终端没有干净地退出,然后我就会丢失历史记录中的那些命令,这很烦人。我怎样才能让它立即刷新,这样即使我的电脑崩溃了,条目仍然会存在那里?目前我正在使用解决方法,但我觉得应该有更好的方法。

我在 Ubuntu 12.10 上使用 gnome-terminal。

答案1

对于“如何手动保存终端历史记录?”这个问题的最简单、可行的答案是:

history -a

history -a将会把您当前的会话历史记录附加到历史记录文件的内容中。

也许还值得考虑切换到 zsh,它setopt inc_append_history(“在执行每个命令之前保存它”)。

这个问题也同样相关:是否可以立即写入 .bash_history ?

答案2

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

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

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

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

答案3

您从超级用户网站提供的链接中的答案不一定被视为history命令默认行为的“解决方法”。 bash shell 有一些合理的、开箱即用的默认行为。

我强烈推荐阅读我怎样才能避免丢失任何历史记录?解释这些修改的作用history。此外,还有一些合理的担忧需要注意,即为什么这不是命令的默认行为history

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

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

如果您担心bash_history通过审计进一步保护 bash shell 和 . 文件的安全,请查看本文:如何记录历史记录或“保护” bash 不被删除历史记录?

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

将以下行添加到您的~/.bashrc文件中:

unset HISTFILESIZE
HISTSIZE=3000
PROMPT_COMMAND="history -a"
export HISTSIZE PROMPT_COMMAND

shopt -s histappend

确保.bashrc使用命令获取文件source ~/.bashrc

相关内容