我无法将终端输出传输到文件

我无法将终端输出传输到文件

虽然 gnome 终端显示以下命令的输出,但它不会将其输出到文本文件

 xinput test 5 

在终端中显示输出,但是

 xinput test 5 >> text.txt 

没有输出到文件

编辑:

“xinput test 5”显示虚拟键盘的键码。我可以使用“xinput test 5”在终端中看到输出,但使用“xinput test 5 >>text.txt”看不到输出

它显示了机载的密钥代码。

编辑2:

我想将“onboard”的击键记录到文件“xinput test 5”中,在终端中很好地显示击键ID,但它不会将其保存到带有“xinput test 5 >> text.txt”的文件中,它还会阻止在终端中显示击键ID。“xinput test 5 2>>text.txt”在终端中显示输出,但不会将其输出到文本文件。

编辑3:

您可以使用“xinput list”找到虚拟键盘 ID,有趣的是,使用“xinput test 5”可以在终端中看到输出,但使用“xinput test 5 >>text.txt”则看不到

答案1

奇怪的是,重定向确实正常工作(我刚刚用鼠标测试过)...这似乎是虚拟设备特有的问题。

嗯,这个问题比我最初想象的要大得多,也更奇怪。简短的回答是:它被缓冲了,当你使用 Control+C 时,那个缓冲区就会丢失。现在,我不知道为什么它是为虚拟设备而不是物理设备缓冲的......这超出了我的工资等级。

如何解决这个问题其实很简单(同样来自史蒂芬·查泽拉斯Unix 和 Linux):

stdbuf -oL xinput test 5 > test

你看到的原因一些之前的输出是因为虚拟键盘写入活动窗口(就像物理键盘一样)。

答案2

输出是缓冲的,因此在写入器 (xinput) 刷新之前,不会有任何内容写入文件。
要强制非缓冲输出,您可以使用

stdbuf -o0 xinput test 5 >out

答案3

尝试这个,

xinput test 5 > text.txt

相关内容