以文件访问xterm的回滚缓冲区


8

是否可以以某种方式(作为只读文件或字符设备)访问xterm的回滚缓冲区?

核心问题(避免x / y“问题”)是这样的:有时,我刚刚执行的命令会创建不确定的输出,我想以某种方式使用其输出而无需预先考虑。现在,唯一的方法(我知道)是使用鼠标将文本选择为主选择。


替代使用tee。您是否考虑过运行script所有命令到文件的日志?
Stephen Quan

Answers:


6

您可以通过告诉xterm使用print-everything操作(通常不绑定到键)来打印数据来做到这一点。

另外,XTerm Control Sequences中记录了一个转义序列:

CSI ? Pm i                                                                      
          Media Copy (MC), DEC-specific.                                        
            Ps = 1  -> Print line containing cursor.                            
            Ps = 4  -> Turn off autoprint mode.                                 
            Ps = 5  -> Turn on autoprint mode.                                  
            Ps = 1  0  -> Print composed display, ignores DECPEX.               
            Ps = 1  1  -> Print all pages.

可以作为

printf '\033[?11i'

但是,两种方法(写入文件)都需要配置printerCommand


是否可以在不重新启动xterm的情况下做到这一点?如果涉及重新启动xterm,则实际上不是答案,因为这将导致输出丢失。
kasperd '18

这就是我想要的。可以动态重新加载资源,我可以重新启动xterm。我已经创建了一个名为fifo并将其配置到printerCommand中,并将print-everything命令绑定到了一个键,并且它完全可以按照我的意愿工作。
John Z.

2

您总是可以使用诸如tmux之类的东西,它提供所需的capture-pane功能,以及拆分(垂直和水平)和多路复用,会话支持以及许多其他功能。

或使用不同的终端模拟器xfce4-terminal也很轻巧并提供了简便Save Contents


1
对我来说,这听起来不像是问题的答案。这些程序都无法神奇地捕获当前仅存在于xterm窗口中的输出。
kasperd '18

@kasperd的解释很公道。他想要一些无需预先考虑即可捕获的东西。我tmux不加思索地使用。那我就没有这个问题。如果您养成了使用tmux的习惯,则无需再考虑这一点(或其他很多东西)。
埃文·卡罗尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.