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