将当前终端回滚保存到文件?

Kar*_*bur 39 command-line gnome-terminal

我一直在寻找这个问题的答案,但没有找到任何让我认为这是不可能的,但是......

是否可以将当前的 Gnome 终端回滚缓冲区保存到文件中?

我知道我可以做一些事情,比如command > output.txt将所有输出重定向到一个文件,或者command | tee output.txt将输出拆分到终端和文件。我想要做的是事后捕捉这一点。我想将当前终端选项卡的回滚内容保存到一个文件中。

Kar*_*bur 54

经过一段时间的尝试后,我发现您可以:

  • triple-click 最后一行
  • 命中shift+home
  • shift+click第一行
  • 复制带ctrl+ shift+ c(或right-click> '复制')

现在将它粘贴到一个文本文件中......或者,xsel你可以通过弹出一个新选项卡并执行以下操作将剪贴板推入一个新文件中:

xsel -o > out.txt
Run Code Online (Sandbox Code Playgroud)

(要安装xselsudo apt-get install xsel

  • 突出显示可以更轻松地完成:`Edit` -> `Select All`。 (9认同)
  • 这是一个很好的答案,因为它让您意识到您可以使用“三次单击最后一行”和“shift + home 或滚动条”来转到输出开始时所需的确切位置。 (4认同)
  • 警告:不要用大的回缩(许多兆字节)尝试这个,因为它可能会挂起 X(发生在我身上)。 (2认同)
  • 刚刚注意到 GNOME 终端的较新版本(在 20.04 = GNOME 3.36.2 上测试)还提供了“复制为 HTML”右键单击选项,如果您想保留任何颜色和突出显示,该选项非常有用。 (2认同)

Tho*_*ers 8

您也可以事后执行此操作。您正在寻找虚拟控制台内存(man vcs包含更多信息和几个示例)。

就您而言,如果您正在通过 /dev/tty1 使用虚拟终端,则以下代码片段将允许您将积压的工作存储在文件中output-file

cat /dev/vcs1 >output-file
Run Code Online (Sandbox Code Playgroud)

请注意,tty1 和 vcs1 的设备号相匹配。

编辑:我应该注意,这仅适用于虚拟终端,不适用于伪终端(伪终端用于实现终端模拟器,如 gnome-terminal、xterm 等,请参阅 参考资料 获取man pts更多信息)。


Ser*_*nyy 7

script当您想将终端会话保存到文件并稍后显示时,命令是合适的。当你调用script它时会启动你的 shell,当你完成时,只需输入 exit。typescript除非您另有说明,否则所有内容都将保存在文件中。

例如,

xieerqi:$ echo "Hello, Karl Wilbur"
Hello, Karl Wilbur

xieerqi:$ date
2015? 10? 27? ??? 11:38:15 MDT

xieerqi:$ df
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sda1      115247656 80939384  28430924  75% /
none                   4        0         4   0% /sys/fs/cgroup
udev             2914832        4   2914828   1% /dev
tmpfs             585216     1100    584116   1% /run
none                5120        0      5120   0% /run/lock
none             2926072      328   2925744   1% /run/shm
none              102400       52    102348   1% /run/user

xieerqi:$ exit
Script done, file is typescript
xieerqi@eagle:~$ cat typescript 
Script started on 2015?10?27? ??? 11?37?55?

xieerqi:$ echo "Hello, Karl Wilbur"
Hello, Karl Wilbur

xieerqi:$ date
2015? 10? 27? ??? 11:38:15 MDT

xieerqi:$ df
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sda1      115247656 80939384  28430924  75% /
none                   4        0         4   0% /sys/fs/cgroup
udev             2914832        4   2914828   1% /dev
tmpfs             585216     1100    584116   1% /run
none                5120        0      5120   0% /run/lock
none             2926072      328   2925744   1% /run/shm
none              102400       52    102348   1% /run/user

xieerqi:$ exit

Script done on 2015?10?27? ??? 11?38?18?
Run Code Online (Sandbox Code Playgroud)

虽然打字稿文件中可能有控制字符,例如来自ls命令,因此请使用cat typescript | col -b > outputfile.txt命令将干净的输出重定向到文件

  • 谢谢,但这是*在*您在终端中收集有价值的信息之前需要完成的事情。我需要一个事后解决方案。 (7认同)