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


33

据我了解,历史记录文件会在终端退出时进行更新。但是有时我的计算机崩溃了,终端无法正常退出,然后我从历史中丢失了那些令人讨厌的命令。我如何立即将其刷新,以便即使我的计算机崩溃了,条目也仍然可以在那里?目前,我正在使用替代方法,但我认为应该有更好的方法。

我在Ubuntu 12.10上使用gnome-terminal。

Answers:


17

您从“超级用户”站点提供的链接中的答案不一定应被视为history命令默认行为的“替代方法” 。bash shell具有一些默认的默认行为,即理智。

我强烈建议您阅读如何避免丢失任何历史记录行?解释这些修改的作用history。此外,关于这不是history命令的默认行为的原因,有一些合理的注意事项需要注意。

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

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

如果您担心进一步固定bash shell和.bash。bash_history文件通过审核,请看一下这篇文章:如何记录历史记录或“安全”打击以防止历史记录删除?

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

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

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

shopt -s histappend

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



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.