configurationGNU屏幕,以便将命令历史存储在文件中

我想configurationGNU屏幕,以便将所有不同窗口的命令历史存储在不同的文件中。

我知道默认情况下,GNU屏幕不会将其命令历史logging(不同窗口)存储在一个文件中(而是将它们存储在内存中),但也可以告诉它将它们存储在文件中?

不同的命令历史文件应该具有<session>.<window>.history或类似的名称。

有没有人有一个想法如何做到这一点?

(只是要清楚,我希望每个GNU屏幕窗口都写一个不同的文件,我喜欢每个窗口都有不同的历史logging,而且我通常在不同的窗口中运行不同types的命令。

创build一个脚本看起来像这样的脚本。

〜/斌/ myshell

 #!/bin/bash HISTFILE=~/.bash_history_w$WINDOW # HISTFILE=~/.bash_history_w${WINDOW}_s${STY##*.} # with session name. export HISTFILE exec /bin/bash 

用这样的一行来调整你的.screenrc。

 shell ~/bin/myshell 

谢谢,但有一个问题:似乎文件实际上并没有被写入,直到我closures一个窗口。 在我的情况下,窗户将永远是活跃的,永远不会closures。 如何触发文件写入而不closures窗口?

您可以通过运行命令history -w手动强制写入。 我不相信有任何方法可以让bash在退出时自动提交历史logging。 似乎有一个选项,但在zsh中 ,searchINC_APPEND_HISTORY。

如果你想要logging每个会话所做的事情,你可以使用脚本 。 如果你想使用脚本来创build每个会话+脚本下的窗口日志,你可以像这样调整myshell。

 #!/bin/bash SHELL=/bin/bash # reset the shell back to bash since screen -s will adjust to to myshell export SHELL script -a -q -f ~/.sessionlog_w${WINDOW}_s${STY##*.} 

壳历史和screen历史是两个不同的东西。 一个shell会记住你在screen记住的所有命令:键入的命令它们的输出(甚至是提示符)。

如果你想保持screen的历史,那么你可以使用它的日志function。 在~/.screenrc结尾添加这些命令:

 screen screen $SHELL -c 'screen -X logfile "/tmp/$STY.%n.history"; screen -p 0 -X deflog on; screen -p 0 -X log on'