我想捕获我运行的 Windows 控制台应用程序的文本输出wineconsole --backend=curses ...
。
该应用程序本身只是使用无聊的 stdio。不幸的是,wine 对输出进行了大量转义,因此在将其重定向到文件时毫无用处。
wineconsole
确实使用环境变量 - 例如,当我设置或 时,TERM
它的行为略有不同。TERM=vt100
TERM=linux
我想,我正在寻找一种非常基本的TERM
方法,根本不需要清除屏幕。
或者是一个模拟 tty 并将输出转换为普通文本的工具。
答案1
您可以尝试设置TERM=dumb
,如果wineconsole
不坚持全屏显示,这可能会起作用。
如果不是,如前所述,script
这是解决方案的一部分。这使您可以运行程序,透明地收集发送到屏幕的文本文件中的所有数据。
理解它是解决方案的其余部分。如果wineconsole
简单地从左到右/从上到下书写,则可以过滤掉转义符(包括颜色)并获得一些有用的纯文本。如果它在屏幕上跳来跳去,显示表格等,你将无法很好地做到这一点。但过滤掉逃逸事件(即使是部分)通常也比什么都没有好。
过滤转义序列的主题偶尔会出现,例如,我可以使用 unix utils 以编程方式将 ANSI 控制代码“烧入”到文件中吗?
进一步阅读:
- 3.8.文本模式程序(CUI:控制台用户界面) 葡萄酒使用指南
- 脚本2日志 去除 ANSI 转义序列并减少退格/重击。