虽然 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