有没有办法用 gnu screen 保存显示屏上打印的内容?

有没有办法用 gnu screen 保存显示屏上打印的内容?

我喜欢保存我在命令行上所做的一切,例如当我升级某些东西并想回顾升级的进展情况等等。

通常,使用 Mac OSX 和终端时,您可以根据需要向后滚动,然后使用 Cmd-S 保存。但是当我使用 gnu screen 在 SSH 上时,我无法直接从终端向后滚动。

如何将屏幕会话中发生的所有事情保存到磁盘?也许默认情况下(每个会话都会自动在磁盘上创建一个文件...)

谢谢!

答案1

中有一个日志记录功能。在执行操作时(或在 内)screen启动它。或者,也可以在 内按- 。screenscreen -LscreenscreenCtrla : H

如果您希望将登录作为默认设置,请将以下行添加到您的~/.screenrc文件中:

deflog on

您可能希望使用类似以下的方式设置文件名:

logfile /tmp/screenlog.%n

答案2

选项 1:查看脚本命令。“man script”

“脚本会将终端上打印的所有内容打印成一份打字稿。对于需要交互式会话的硬拷贝记录作为作业证明的学生来说,这很有用,因为打字稿文件可以稍后使用 lpr 打印出来”

基本上输入“script”(没有引号) - 完成你的工作,然后输入一次 exit 来结束会话。

选项 2:使用屏幕的“硬拷贝”模式。'Crtl-a' 然后 'h' 这会将当前会话保存到文件中。

注意:GNU Screen 确实具有滚动功能。使用“crtl-]”(右方括号)进入复制模式,然后使用“ctrl-b”和“ctrl-f”一次移动 p 并向下移动一页。

答案3

您将需要使用通常绑定到的“log”操作Ctrl-a H。这将打开一个名为 screenlog 的新文件。在哪里是窗口编号。如果文件存在,则输出将附加到文件。该窗口中的所有输出都将记录到屏幕日志中。文件,直到您再次按 停用Ctrl-a H。您也可以使用 获得此功能Ctrl-a :log。您可以使用 命令更改名称logfile {filename}。文件将放置在屏幕首次启动的目录中,但可以使用 logfile 命令或 进行更改chdir [{directory}]

请注意,这与硬拷贝或滚动缓冲区不同。这与 script(1) 程序具有相同的功能,但绑定到单个窗口,而无需调用新程序。

如果要保存滚动缓冲区的全部内容,请使用Ctrl-a ] g <space> G <space> Ctrl-a :writebuf 此操作将滚动缓冲区保存到文件 /tmp/screen-exchange。如果只想保存一部分,则将“g”和“G”更改为其他移动键。

相关内容