我可以仅使用键盘保存上一个终端命令的输出吗?


12

我只用了最后两个小时,从没有GUI的实时CD上运行dd命令(或描绘任何类似的“难以重做”的情况)。我所拥有的只是我可信赖的“多窗口”(CTRL+ALT+F#)Bash终端。

,在执行此命令期间,dd抛出了一些令人讨厌的错误消息以及我想保留的更多信息。我插入了可以写入数据的USB驱动器,但是在命令运行后如何将以前的输出保存为文本文件?

如果这是一个不错的GUI中的终端仿真器,那么我只需要用鼠标选择文本,复制文本并将其粘贴到文档中即可。而且,如果我知道该命令会产生错误,我会先将其通过管道传输到文件中,但是可惜,额外的输出令人惊讶。

如何在不重新运行命令的情况下将先前命令的文本输出保存到文件中?这有可能吗?


我一直在寻找在屏幕上选择文本的方法,但到目前为止,我仅找到使用在提示中输入的文本来执行此操作的方法。
IQAndreas

您是否尝试过使用输出重定向?
eyoung100

2
@ eyoung100这是“管道”的另一个词吗?就像在dd if=/dev/sda of=/backups/sda.img > result.txt。如果是这样,问题是我已经运行了dd命令。我不惜一切代价避免再次运行该命令,在某些情况下这是不可能的。
IQAndreas

2
假设这是Linux:安装gpm。(例如,如有必要,启动它service start gpm)。按住鼠标左键扫出一个区域。键入cat > outputfile并单击鼠标右键以粘贴刚选择的区域。
Mark Plotnick

1
如果目标仅仅是“保持……信息”,那么最后的选择就是拿起相机并拍摄屏幕照片。(并且,从理论上讲,您可以对此进行OCR。)
Scott

Answers:


15

linux内核应在相应/dev/vcsa*[ttynum]设备中存储vts的屏幕日志。

这就是以下原因的原因:

echo hey >/dev/tty2
dd bs=10 count=1 </dev/vcs2

...打印...

hey       

相应的/dev/vcsa[ttynum]设备将在屏幕上存储格式化文本的编码版本,而/dev/vcs[ttynum]将是纯文本转储。该vcsa[ttynum]装置将编码的一对描述每个屏幕上的字符和它的属性,以及在表示所引用的TTY的每个逻辑页面的头部的串的字节线,柱计数。

正如@kasperd所指出的,我之前通过假设\aBEL在每个字符之间进行编码而犯错了,而实际上:默认颜色组合恰好与钟形字符重合。

为了您的目的,使用/dev/vcs[ttynum]可能是最简单的。这是一个l差异方面的优势:

echo hey >/dev/tty2
dd bs=10 count=1 </dev/vcs2 |
sed -n l

...印刷品...

hey       $

...和...

echo hey >/dev/tty2
dd bs=10 count=1 </dev/vcsa2 |
sed -n l

...印刷品...

0\200\000\004h\ae\ay\a$

1
vcsa不要在所有字符之间放置相同的字符。它提供了成对的字节,告诉您屏幕上的哪个字符以及它的颜色。默认的颜色组合恰好与铃铛字符一致。
卡巴斯德(Kasperd)2015年

@kasperd-谢谢。是不是更好?
mikeserv

这样更好 👍–卡斯珀德
Kasperd)2015年

2

转到(/登录)另一个终端并运行sudo screendump N > screenoutput.txt,其中N是您想要的终端号。

我担心没有积压。如果这些虚拟控制台保留其中一个,我从未见过。但是,您可以获得在该终端上看到的所有内容。


如果它确实起作用,则可能是因为它从/dev/vcsa*[1-9]*- (这是我猜超级用户权限所针对的)中获取了它。我认为,Linux控制台也支持大多数3. *系列的积压工作。我不确定如何抓住它(与使用/dev/vcsa*[1-9]*设备相反),但也许有办法。
mikeserv

最好不要切换到其他控制台,因为切换会清除积压,只保留屏幕上当前可见的内容。
吉尔斯(Gilles)'“ SO-不要邪恶”

@mikeserv是的。好了,该男子页似乎在说,它使用 /dev/vcs$i/dev/vcsa$i。虽然它给出了可读的结果。;-)
Sidhekin

@Gilles啊,所以还有待办事项?但是screendump即使我呆在同一个控制台中,它也无法解决问题。
该Sidhekin

1
您可以通过键入Shift-PageUp一次或多次来查看回滚。除了通过gpm使用鼠标外,我不知道有什么方法可以滚动显示滚动文本。
Mark Plotnick
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.