GNU 屏幕丢失(部分)命令历史记录

use*_*474 5 bash gnu-screen

我使用GNU screen5 个不同的会话,每个会话都存储自己的命令历史记录。但是我经常在历史记录中找不到命令,尽管我确信我在几周前的当前会话中完全使用了它。

历史大小似乎有硬限制?我怎样才能将其设置为无穷大?

一个相关的问题:如何控制会话历史记录的存储位置?通常,我们的系统管理员会重新启动计算机,而我会丢失所有会话,而我必须这样做,screen -wipe因为会话已损坏。然后,所有的历史都消失了。:( 我想在这种情况下找到存储的历史记录并将它们绑定到新创建的会话中。

PS:我bash在所有屏幕会话中使用。

更新:我不是在问如何统一会话历史。只是,我希望每个会话都有无限的历史记录,并且我希望能够将该历史记录“加载”到新会话中,以防旧会话损坏或删除。

更新 2:您可能已经发现:当我说我使用GNU screen5 个不同的会话时,我的真正意思是GNU screen其中包含 5 个不同窗口的会话。对不起。

Den*_*son 6

您最好使用 Bash 的历史记录而不是 screen 的。Screen 保留一个回滚缓冲区(可能在内存中而不是在文件中)。当您使用Ctrl-回忆命令时,a {它实际上是在挖掘屏幕上出现的所有内容,这些内容仍在缓冲区中,看起来好像跟在提示字符之后。没有真正的命令历史记录。顺便说一下,您可以使用screen -h numdefscrollback numscrollback numscreen 命令增加回滚缓冲区的大小。

您可以使用warren的建议来使您的 Bash 历史记录保持最新。和/或您可以使用我在此处找到的一种日志功能该功能可以保存您的 IP 地址或屏幕会话 ID 以及日期、时间、当前工作目录和实际命令。我自己一直在使用这个。您可能必须设置$hcmntextra我的函数使用的变量,以包含$STY屏幕会话名称也被记录。