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


24

我一直在寻找答案,但没有找到任何使我觉得不可能的事情,但是...

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

我知道我可以做一些事情,例如command > output.txt将所有输出重定向到文件,或command | tee output.txt将输出拆分到终端以及文件。我正在尝试做的是在事实发生之后捕获此信息。我想将当前终端标签的回滚内容保存到一个文件中。


kitty是一个可以执行此操作的终端程序,不幸的是字体看起来很糟糕(没有亚像素渲染)
jberryman

谢谢,@ jberryman。很高兴知道。
卡尔·威尔伯

Answers:


37

经过一番游戏后,我发现您可以:

  • triple-click 最后一行
  • 击中 shift + home
  • shift + click 第一行
  • 复制为ctrl + shift + c(或right-click>“复制”)

现在将其粘贴到文本文件中...或者,xsel通过弹出新标签页并执行以下操作,可以将剪贴板推入新文件中:

xsel -o > out.txt

(要安装xselsudo apt-get install xsel


5
突出显示可以更轻松地完成:Edit-> Select All
egmont

3
这是一个很好的答案,因为它使您意识到可以使用triple-click the last lineshift + home or the scrollbar转到输出开始所需的确切位置。
法老王大厨

2
警告:请勿尝试使用较大的scollback(很多兆字节),因为它可能会挂X(发生在我身上)。
凯文·考克斯

对于许多兆字节,预期处理速度会很慢。请耐心等待,让计算机正常工作。“给我一秒钟!它会飞向太空!你能给它一秒钟从太空回来吗?!”
Karl Wilbur

我只是尝试使用Edit-> Select All方法复制大型回滚(从一夜之间备份几个2TB驱动器而来的rsync输出)来捕获输出。现在已经25到30分钟了,Gnome Terminal仍然处于锁定状态。使用Byobu,我可以启动top以查看Gnome Terminal仍在运行(增加CPU时间);目前使用了超过4.176g的RAM,并且正在缓慢攀升。是的,回滚非常大,需要一段时间。X仍在运行(Chrome,YouTube,Nautilus,Byobu等),但Gnome Terminal需要一分钟。我应该好好计划一下
Karl Wilbur

2

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秒

尽管打字稿文件中可能会有控制字符,例如来自lscomand的字符,所以请使用cat typescript | col -b > outputfile.txt命令将干净输出重定向到文件


5
谢谢,但这是您需要在终端中收集有价值的信息之前要做的事情。我需要事后解决方案。
Karl Wilbur

1
不过,这非常好。以后再试。
Karl Wilbur

@KarlWilbur :)我确定您会发现它很有用。我在编程作业中经常使用它。实际上,有一种方法可以在TTY控制台中转储屏幕上显示的内容,但是gnome-terminal有点棘手
Sergiy Kolodyazhnyy 2015年

@SergiyKolodyazhnyy我尝试将其实现到我的python脚本中,但是我无法从执行“ os.system(“ exit”)的脚本中退出。但是它确实从终端退出并将输出保存到文件中
。– mtkilic

@mtkilic该script命令启动一个单独的进程,因此作为子进程的父级的python脚本正在等待子级退出。这对于交互式会话来说意味着更多,但是如果您确实想在Python解释器中记录会话,script请先启动命令,然后再启动解释器。该命令还应该带有-c标志,以便您可以调用,script -c python但要仔细检查man script
Sergiy Kolodyazhnyy
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.