BASH:有没有办法在不活动期间自动将最近的行保存到我的bash历史记录中?

jvr*_*sem 3 bash shell scripting history .bash-profile

.bash_history文件是我们许多人的生命保存.不幸的是,BASH似乎只在该会话关闭(通过exit)时保存会话的命令.

这是一个悲剧,然后,当一个重要会话的所有命令在一个会话意外关闭时被蒸发 - 在它使用花哨的语法归档所有命令之前需要数小时才能正确...

当我忘记在离开工作时忘记关闭SSH连接,并且由于不活动(Write failed: broken pipe)而导致断开连接,或者当我重新启动计算机而没有手动关闭终端时,这种情况发生在我身上,等等.

我希望在一段时间之后将我的BASH命令存档 - 比如说每10分钟 - 这样如果我关闭一个会话,我的命令仍然会存在.这似乎是很多人可能觉得有用的东西.

有没有人知道如何做到这一点?

理想的情况下....

  • 一旦设置,该功能就不需要用户的额外努力 - 他/她可以添加的东西 ~/.bashrc
  • 用户可以更改备份间隔
  • 它会避免使用临时文件,别名bash或其他"黑客"

StackOverflow- ers - 认为自己受到挑战!

小智 6

您可以使用history-a选项的命令:

history
-a     Append the ``new'' history lines  (history  lines  entered  since  the
       beginning of the current bash session) to the history file.
Run Code Online (Sandbox Code Playgroud)

您可以在PROMPT_COMMAND函数的帮助下立即将每个命令写入历史文件:

PROMPT_COMMAND
If set, the value is executed as a command  prior  to  issuing  each  primary prompt.
Run Code Online (Sandbox Code Playgroud)

所以把它放到.bashrc中

PROMPT_COMMAND="history -a"
Run Code Online (Sandbox Code Playgroud)