读取终端中显示的所有内容

读取终端中显示的所有内容

我正在创建一个终端应用程序,将内容写入终端。为了测试它,我真的应该测试终端中实际显示的内容。有没有办法以某种方式读取终端中实际显示的数据?

终端必须是某个地方的某个文件或其他东西,因此必须有某种方法来读取那里的内容。

cat /dev/tty

似乎给了我那里的数据流......但我不想看到击键,只是我写的内容。

答案1

一些终端程序提供屏幕转储(例如xterm),但大多数没有(参见屏幕上现有的命令行文本要保存到文件中吗? (非图形Linux)例如)。您可以使用 gimp 等工具进行屏幕截图,但这不会告诉您实际的字符是什么。为了发展,我需要知道这一点。

我用来script将输出记录到typescript.您可以cat将其返回到屏幕(或者使用less -R,如果转义序列足够简单)。对于更复杂的事情或长痕迹,我使用其他工具:

为了说明差异,下面是在我的一台 Debian 机器上运行的文件less -r的屏幕截图:typescriptapt-get update

在此输入图像描述

相反,vile-pager突出显示文本被覆盖的位置:

在此输入图像描述

无论哪种方式(较少或卑鄙),如果您的应用程序在屏幕上移动光标,则查看输出的唯一方法是使用 cat/slowcat/etc。

答案2

tee一种选择是在要跟踪的所有命令之前使用该工具。这样,您可以将所有输出存储在选定的日志文件中。

请参阅下面的示例,其中我将所有bash输出保存到名为的文本文件中log.txt

bash | tee log.txt
echo 'hello world'
ls
exit
cat log.txt

完成后,您可以使用CTRL+D或简单地键入(如上例所示)退出新的 BASH 会话。exit

如果您只想查找实际传递到终端的命令(我不清楚这是否是原始问题所期望的),您始终可以运行history或检查~/.bash_history

答案3

PARAMETER_EMMC=10
while [ $PARAMETER_EMMC -eq 10 ]
    do
    read -u $USBFPI -r -n 3000 -t .3  text
        if [[ $text == *"text read from USB"* ]];  then

Execute 
fi 
done

相关内容