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

标签 shell scripting history bash

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

这是一个悲剧,然后,当一个 session 意外关闭时,你来自一个重要 session 的所有命令都消失了——在它用花哨的语法归档所有命令之前,这些命令花了几个小时才正确....

当我在下类时忘记关闭 SSH 连接,并且由于不活动(Write failed: broken pipe)而断开连接时,或者当我在没有关闭我的电脑的情况下重新启动计算机时,我就会遇到这种情况手动终端等。

我希望在一段时间后(比如每 10 分钟一次)归档我的 BASH 命令,这样即使我关闭了一个 session ,我的命令仍会存在。这看起来有点像很多人可能会觉得有用。

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

理想情况下....

  • 该功能一旦设置就不需要用户额外的努力——他/她可以添加到 ~/.bashrc
  • 用户可以更改备份间隔
  • 它将避免使用临时文件、别名 bash 或其他“hacks”

StackOverflow 用户 -- 认为自己面临挑战!

最佳答案

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

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

借助 PROMPT_COMMAND 函数,您可以一次将每条命令写入历史文件:

PROMPT_COMMAND
If set, the value is executed as a command  prior  to  issuing  each  primary prompt.

所以只要把它放到 .bashrc 中

PROMPT_COMMAND="history -a"

关于shell - BASH:有没有办法在不活动期间自动将最近的行保存到我的 bash 历史记录中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26028060/

相关文章:

bash - 期望在 bash 中对 ssh 密码进行异常处理

bash - 如何增加属性文件中的数值

javascript - 窗口绑定(bind) POPSTATE

escaping - 为什么 VERTICAL TAB 有转义序列?

bash - 如何将某些命令永久添加到 .bash_history?

shell - echo 和 cat - 抑制新行字符

python - os.system(cmd) 与终端中的 cmd 不同

matlab - 如何识别生成特定工作区变量的脚本?

linux - 定位命令与查找命令有何不同?

python - 交互式 CLI 包 - 复选框和选择