将GNU屏幕回滚缓冲区复制到文件(扩展硬拷贝)?

bar*_*ter 173 keyboard-shortcuts gnu-screen

如何轻松地将GNU屏幕回滚缓冲区复制到文件中?IE,'hardcopy'命令的更强大版本?

在GNU屏幕中,我可以使用" ctrl- a ESC"进入回滚缓冲区.然后我可以标记整个缓冲区并使用" ctrl- a ctrl- ]"将其粘贴到emacs缓冲区中,从而将其保存到文件中.

但是,这很乏味.是否有一个屏幕命令,只是简单地将回滚缓冲区复制到文件中,就像"硬拷贝"对屏幕的可见部分一样?

小智 270

要将回滚缓冲区的全部内容写入文件,请键入

Ctrl+ A然后: 进入命令模式

hardcopy -h <filename>
Run Code Online (Sandbox Code Playgroud)

在旧版本中screen,如果你这样做hardcopy -h,它只是写入文件-h.这是固定在4.2.0版本,因此hardcopy -h写入hardcopy.N其中N是当前窗口数量.

  • 是的,但它会保存在您开始*屏幕的$ PWD中.*不是*在屏幕会话的$ PWD中. (8认同)
  • 我必须输入Ctrl + A:进入命令模式. (6认同)
  • 请注意,如果您有一个长的回滚缓冲区并且其中没有多少,则保存的文件可能显示为空,因为前几十行或几百行是空白而内容是最后一行. (5认同)
  • @allrite:它保存在$ PWD中(如果你没有给出完整路径),没有特殊的行为. (2认同)
  • 关于硬拷贝保存位置的另一个注意事项:如果你cd到目录然后使用`screen -r`重新连接到现有会话,硬拷贝不会保存到屏幕内的活动目录或你的那个在使用`screen -r`之前.我认为它会保存到您第一次启动屏幕会话时所在的目录中.您可以使用[hardcopydir](http://web.mit.edu/gnu/doc/html/screen_17.html#SEC101)命令更改此设置. (2认同)
  • 如果您不确定目录,请使用 Ctrl+A+C 创建一个新窗口。它在保存文件的目录中打开。 (2认同)

Ros*_*han 24

Ctrl+ A :bufferfile /tmp/somefile.txt ENTER,然后按Ctrl+A >

这会将缓冲区的当前内容写入指定的文件.

  • 您确定使用 Ctrl+A [ 将某些内容复制到屏幕缓冲区中吗?听起来您的缓冲区可能是空的 - 它不会复制整个回滚缓冲区,只会复制您使用 Ctrl+A [ (2认同)
  • 啊,我正在寻找一个快捷方式来复制整个缓冲区而不使用ctrl-a [ (2认同)

Kev*_*let 10

TL; DR: ^A:writebuf <filename>

OP似乎想要一种方法来使用你在执行^ A [,选择使用空格作为开始和结束的文本,然后使用^ A而不是使用^ A]粘贴时获得的缓冲区的选定部分,保存所得到的选定部分缓冲到文件.

我知道这已经发布了多年,但我一直在寻找同一个问题的答案,最终发现:

^A:writebuf <filename>

注意:writebuf中有一个'f'

  • 这篇文章仍然有用.做得好. (3认同)
  • 老鼠!错过了这么多 (2认同)

小智 6

尝试hardcopy -h包括整个缓冲区

  • 这只是在文件〜/ -h中进行硬拷贝 (2认同)
  • @barrycarter:这可能在更新的版本中发生了变化。从屏幕 4.03.01 开始,`hardcopy -h` 写入 `hardcopy.N`,其中 `N` 是当前窗口编号。 (2认同)

小智 5

这对我有用:

进入编辑模式 ( ~) 并键入:

:hardcopy -h buff_file
Run Code Online (Sandbox Code Playgroud)

它创建了一个巨大的文件,其中 98% 是空的,但我的日志完全存在于剩余的 2% 中。