我想知道是否有人知道在 Linux 上的 xterm 窗口中转储或复制所有可查看消息的方法。非常重要的是我不想知道如何发送命令并捕获流 1 和 2 的输出以及输入,因为这对我来说是众所周知的。
我可以解释一下这需要什么。你做了一些事情,预计不会有任何并发症,但你会得到 msg 的 als err msg 或正常输出的页面。为了能够稍后查看,您应该能够将它们放入文件中,并且只要您能够用鼠标来回滚动所有内容,就可以确保数据存在于某个位置。但时间可能不是滚动、截图和滚动....
在这种情况下,我很乐意为我提供帮助,并且如果您能够获得完整的视图,包括您自己的所有打字和所有消息,并且按您向后滚动时观看的顺序相同的顺序,那就太好了。
我真的不知道它存储在哪里以及如何保存它。我知道我可以转储全部内存并在其中搜索 xterm 窗口的一部分,但我认为这有点过头了。
有一个控制序列,我忘了。这个问题提醒了我。在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.
Run Code Online (Sandbox Code Playgroud)
它可以追溯到 1999 年(补丁#119),所以你的 xterm 中可能有它。您可以在 shell 命令中执行此操作,如下所示:
printf '\033[?11i'
Run Code Online (Sandbox Code Playgroud)
评论提到了xterm 的 Hidden gems页面,它使用相应的操作 print-everything(可以通过资源执行的操作translations)。当然,它在手册页中。相同的注释指向XTerm PrinterCommand 输出中的额外字符,其中提到了资源printAttributes。默认情况下,打印机的控制序列告诉 xterm 发送额外的控制字符(以重建视频属性)。可以修改资源(设置为0)来抑制这种情况。那甚至更旧(补丁#74)。
如果没有这个——可以想象,我们可以构建一个应用程序,该应用程序使用 X SendEvent 协议来构建一系列事件,这些事件将被解释为 xterm 操作,以向后滚动、选择文本并通过剪贴板逐块复制它。你甚至可以用 Perl 编写它(有一个用于X 协议的模块)。但说真的,不。
如果您想捕获写入 xterm 的文本,您可以通过在需要文本之前通过不同的方法进行准备来完成此操作(请参阅手册):
script捕获终端的所有输出。我使用它是因为它适用于任何 POSIX 类系统(甚至 Cygwin)上的任何终端。这些方法中的每一种都会生成一个包含转义/控制序列的文件,需要将其过滤掉。使用 SendEvent 的假设程序原则上可以消除这种情况。
| 归档时间: |
|
| 查看次数: |
1977 次 |
| 最近记录: |