BASH:有没有办法在不活动期间自动将最近的行保存到我的BASH历史记录中?
BASH:有没有办法在不活动期间自动将最近的行保存到我的BASH历史记录中?,bash,shell,scripting,history,.bash-profile,Bash,Shell,Scripting,History,.bash Profile,.bash_history文件是我们许多人的救命稻草。不幸的是,BASH似乎只在会话关闭时保存该会话的命令(通过exit) 这是一个悲剧,当一个重要的会话意外关闭时,您的所有命令都被蒸发了——在它用花哨的语法归档所有命令之前,这些命令花了好几个小时才恢复正常 当我在离开工作时忘记关闭SSH连接,并且由于不活动(写入失败:管道断开)而断开连接,或者在没有手动关闭终端的情况下重新启动计算机,等等,都会发生这种情况 我希望每隔一段时间(比如每10分钟)存档一次BASH命令,这样,如果我确实关闭了一个会
.bash_history
文件是我们许多人的救命稻草。不幸的是,BASH似乎只在会话关闭时保存该会话的命令(通过exit
)
这是一个悲剧,当一个重要的会话意外关闭时,您的所有命令都被蒸发了——在它用花哨的语法归档所有命令之前,这些命令花了好几个小时才恢复正常
当我在离开工作时忘记关闭SSH连接,并且由于不活动(写入失败:管道断开)而断开连接,或者在没有手动关闭终端的情况下重新启动计算机,等等,都会发生这种情况
我希望每隔一段时间(比如每10分钟)存档一次BASH命令,这样,如果我确实关闭了一个会话,我的命令仍然会在那里。这似乎是很多人可能会觉得有用的东西
有人知道怎么做吗
理想情况下……
- 该功能在设置后不需要用户付出额外的努力,用户可以将其添加到
~/.bashrc
- 用户可以更改备份间隔
- 它将避免使用临时文件、别名
bash
,或其他“黑客”
堆栈溢出者——考虑你自己的挑战! 您可以将
历史记录
命令与-a
选项一起使用:
history
-a Append the ``new'' history lines (history lines entered since the
beginning of the current bash session) to the history file.
在PROMPT\u command
函数的帮助下,您可以将每个命令一次写入历史文件:
PROMPT_COMMAND
If set, the value is executed as a command prior to issuing each primary prompt.
把这个放进,bashrc
PROMPT_COMMAND="history -a"
根据协议,bash(通常)在断开连接时将收到一个信号
使用trap
我们可以编写历史记录(lame as#*?!但是bash默认不这么做..):
将上述内容放在.bashrc
中,这样做的目的是存档自上次存档以来输入的任何新命令——实际上,每个命令都将在成功完成该命令后存档,对吗?是的,如果“成功完成”是指在命令行中键入命令并按下enter键。如果命令有任何意义,那就是另一个故事,但它将保存在.bash_history中。是否可以通过在后台运行一些类似于cron
的作业来实现自动化?如果是这样,我会把这个问题标记为已接受!已创建:。
function rescue_history {
history -a
}
trap rescue_history SIGHUP