如何将未记录的控制台屏幕的内容保存到文件?

我是一个tty,有很多命令输入,大量详细的输出,以及一些错误消息。 现在我必须以控制台屏幕中显示的格式将所有stdin / stdout / stderr文本转储到文件中。 如何使用内置工具(最好)完成这项工作?

我不知道这个问题是否令人困惑! 这真的很简单..假设我登录到tty1控制台终端,运行了一些命令(没有启用日志记录,因为我觉得不需要)但突然出现了我要转储到文件中的某些输出/消息(或另一种选择获得笔和纸)。

我之所以这样做是因为你可以使用shift + PgUp/PgDwn来移动屏幕输出,这意味着它们仍然在缓冲区中(即使处理是流水线的)! ..那就是应该恢复的东西。

TTY使用“虚拟控制台内存”设备来缓冲其屏幕内容。 您可以在man vcs阅读有关它们的更多信息,但这可以让您了解当前屏幕上的内容

实际上,这些只是/dev/中编号的文件,与TTY编号对齐。 这是我用TTY2做的一个例子:

 $ sudo fold -w$(stty -F /dev/tty2 size | awk '{print $2}') /dev/vcs2 Ubuntu 14.04 LTS bert tty2 bert login: oli Password: oli@bert:~$ cd test oli@bert:~/test$ ls Madonna - 10 - Bedtime Story.mp3 output_MP3WRAP.mp3 Madonna - 11 - Take A Bow.mp3 oli@bert:~/test$ 

fold -w$(...)是因为缓冲输出似乎没有我期望的控制字符或换行符。 这只是在每一行的末尾添加\n

正如TuKsn在评论中指出的那样,你不必乱用所有这些,你可以实现完全相同的:

 sudo screendump 2 

您可以在任一命令的末尾粘贴> tty.log ,将输出写入当前目录中名为tty.log的文件:

 sudo screendump 2 > tty.log 

同样, 这只会让你获得屏幕上的内容 。 即使您在TTY中增加回滚缓冲区, 也不会将其存储在可访问的内存中 。 您可以更改它,但这涉及重新编译内核。

这将涉及重新启动并丢失当前屏幕,因此如果您可以这样做,则可以更轻松地记录未来的 IO,例如screentmux或只是script

可能你可以使用名为screen的程序。 它将终端的所有输出保存到文件中。 看看这个Ubuntu论坛主题http://ubuntuforums.org/showthread.php?t=1379903 。 CMIIW。

由于我找不到Select All的任何键盘快捷键,我发现这些可能有帮助… https://stackoverflow.com/questions/1536757/selecting-text-in-terminal-without-using-the-mouse 命令线剪贴板复制和粘贴实用程序?

第一个是屏幕,已被建议,但它似乎有一个复制文本的实用程序,所以这可能工作。 使用^ A-Esc进入复制模式。 开始选择带空格的文本,然后选择带空格的文本。 用^ A-插入文字

第二个是将剪贴板中的文本粘贴到文件中。 我完全不确定这些是否会起作用…希望有人这样做。