我刚刚花了最后两个小时运行dd
命令(或想象任何类似的“难以重做”的场景)来自没有 GUI 的 Live CD;我所拥有的只是我值得信赖的“多窗口”( CTRL+ALT+F#
) Bash 终端。
唉,在命令过程中dd
抛出了几条令人讨厌的错误消息和更多我想保留的信息。我插入了一个可以写入数据的 USB 驱动器,但是在命令运行后如何将之前的输出保存为文本文件?
如果这是一个漂亮的 GUI 中的终端模拟器,我只需使用鼠标选择文本,复制它,然后将其粘贴到文档中。如果我知道该命令会产生错误,我会首先将其输出到一个文件,但可惜的是,额外的输出令人惊讶。
如何将上一个命令的文本输出保存到文件而不重新运行该命令?这可能吗?
答案1
Linux 内核应该在相应的设备中存储 vts 的屏幕日志/dev/vcsa*[ttynum]
。
这就是为什么以下方法有效:
echo hey >/dev/tty2
dd bs=10 count=1 </dev/vcs2
...打印...
hey
相应的/dev/vcsa[ttynum]
设备将在屏幕上存储格式化文本的编码版本,而将/dev/vcs[ttynum]
是纯转储。设备vcsa[ttynum]
将编码一对字节,描述每个屏幕上的字符及其属性,以及每个逻辑页开头的字符串,指示引用的 tty行、列数数。
正如 @kasperd 指出的,我之前假设 BEL\a
在每个字符之间进行编码,这是错误的,但事实上:默认的颜色组合恰好与铃铛字符一致。
出于您的目的,使用/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$
答案2
转到(/登录)另一个终端并运行sudo screendump N > screenoutput.txt
,其中N
是您想要的终端号。
我担心没有积压。如果那些虚拟控制台保留一个,我从来没有见过它。但它可以让您在该终端上看到所有内容。