如何使用 ANSI 转义代码保存 GNOME 终端内容?

如何使用 ANSI 转义代码保存 GNOME 终端内容?

VT100 终端有一个相对简单的方法将带有转义码的终端内容保存到文件中使用Meta- p

XTerm.VT100.printAttributes: 2
XTerm.VT100.printerCommand: cat - > file
XTerm.VT100.translations: #override Meta <KeyPress> P: print() \n

我搜索了好多地方,但没能找到在默认的 GNOME 终端 + XTerm + Bash 中解决这个问题的办法。

我愿意不是只想要一个包含窗口内容的图像。

GNOME 终端似乎最终会修复这个问题,但尚无关于它将包含在哪个版本的信息,而且距离上次更新已经过去近三年了……

答案1

不幸的是,l0b0 开箱即用的答案是:这是不可能的。

在我的另一个回答中,我列出了如何使用脚本来执行此操作,尽管正如您所指出的那样,它们之间存在一些差异。另一种方法是编译源代码或使用不稳定版本。

Gnome 终端源代码 Tarball

Raring 中的版本是 3.6.1,因此您可以查看此源代码。在 Terminal-window.c 的第 115 行中:

/*
 * We don't want to enable content saving until vte supports it async.
 * So we disable this code for stable versions.
 */

#include "terminal-version.h"

#if (TERMINAL_MINOR_VERSION & 1) != 0
#define ENABLE_SAVE
#else
#undef ENABLE_SAVE
#endif
#endif

选项:

  1. 在其下添加#define ENABLE_SAVE。
  2. 修改版本为不稳定版本。
  3. 下载不稳定版本的 .DEB。

希望这可以帮助。

答案2

不幸的是,l0b0 开箱即用的答案是:这是不可能的。

有两种方法可以尝试纠正此问题:在终端上始终运行脚本并记录所有输出。打开 gnome-terminal,转到编辑->个人资料偏好,然后按标签头衔和命令对于您的自定义命令,请使用以下命令:

bash -l -c 'script -q -c bash $HOME/sessionlogs/$BASHPID.sessionlog.$(date +%Y%m%d-%H%M).txt'

确保 $HOME 下存在“sessionlogs”。

另一种方法已被删除并添加为该问题的第二个答案。

答案3

你可以通过以下方式运行你的 shell脚本(1)将终端的所有输入和输出(包括终端转义)存储在文件中。

答案4

嗯,这不会复制转义代码,但只是为了获取文本,您可以进入菜单编辑->全选,然后按CtrlShiftC并(i)将剪贴板粘贴到编辑器或(ii)键入cat > filename并按CtrlShiftV

相关内容