Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
BASH:有没有办法在不活动期间自动将最近的行保存到我的BASH历史记录中?_Bash_Shell_Scripting_History_.bash Profile - Fatal编程技术网

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