我一直在寻找这个问题的答案,但没有找到任何让我认为这是不可能的东西,但是......
是否可以将当前 Gnome 终端回滚缓冲区保存到文件?
我知道我可以做一些事情,比如command > output.txt
将所有输出重定向到一个文件,或者command | tee output.txt
将输出拆分到终端和文件。我想做的是事后捕获这一点。我想将当前终端选项卡的回滚内容保存到一个文件中。
答案1
经过一番尝试后,我发现你可以:
triple-click
最后一行- 点击shift+home
- shift+
click
第一行 - 使用ctrl++ shift(c或
right-click
>‘复制’)进行复制
现在将其粘贴到文本文件中...或者,xsel
您可以通过打开新选项卡并执行以下操作将剪贴板推入新文件中:
xsel -o > out.txt
(要安装xsel
请执行以下操作sudo apt-get install xsel
)
警告
无限回滚可以得到巨大的尝试选择所有内容进行复制会很慢,甚至可能超出内存限制。请参阅下面的评论。
答案2
您也可以事后这样做。您正在寻找虚拟控制台内存(man vcs
包含更多信息和几个示例)。
对于您来说,如果您通过 /dev/tty1 在虚拟终端上工作,以下代码片段将允许您将积压工作存储在文件中output-file
:
cat /dev/vcs1 >output-file
注意tty1和vcs1的设备号要匹配。
编辑:我应该注意到,这只适用于虚拟终端,而不适用于伪终端(伪终端用于实现终端仿真器,如 gnome-terminal、xterm 等,man pts
有关更多信息,请参阅)。
答案3
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秒
但是,typescript 文件中可能有控制字符,例如来自ls
命令的字符,因此请使用cat typescript | col -b > outputfile.txt
命令将清理输出重定向到文件