我正在尝试将命令行程序的所有输出重定向到文件中。我正在使用Bash。一些输出被定向到该文件,但有一些仍然出现在终端并未存储到文件中。
类似的症状在这里描述:
然而,我尝试了所提议的解决方案(捕获stderr),但没有成功:
<cmd> <args> > stdout.txt 2> stderr.txt
文件stderr.txt已创建,但内容为空。
可能的线索是,命令行程序是一个客户端,与同一台机器上的服务器进行通信。可能部分输出来自服务器。
是否有办法捕获终端的所有输出,不管它的来源是什么?
编辑:
我已确认缺失的输出是由服务器生成的。在单独的终端中运行该命令会导致两个终端都有一些输出,我可以将命令终端的所有输出传输到一个文件中。这引发了如何捕获服务器输出的问题,但这是另一个问题。
/dev/tty
,而不是标准输出流之一,则没有(简单的)方法来捕获它。还有可能将stdout/stderr文件描述符复制到另一个文件描述符并在那里写入,您可以捕获它(例如... 3> somefile
),但您必须知道正在使用哪个文件描述符... - twalberg