我正在尝试将命令行程序的所有输出重定向到一个文件。我正在使用Bash。一些输出被定向到文件,但一些输出仍然出现在终端中,而不是存储到文件中。
下面描述了类似的症状:
然而,我已经尝试了建议的解决方案(捕获stderr),但没有成功:
<cmd> <args> > stdout.txt 2> stderr.txt
文件stderr.txt已创建,但为空。
一个可能的线索是,命令行程序是与同一台机器上的服务器通信的客户端。可能某些输出来自服务器。
有没有一种方法可以捕获来自终端的所有输出,而不考虑其来源?
编辑:
我已经确认丢失的输出是由服务器生成的。在单独的终端中运行命令会在两个终端中产生一些输出,我可以将命令终端的所有输出通过管道传输到一个文件中。这引发了有关如何捕获服务器输出的问题,但这是另一个问题。
发布于 2013-05-31 01:20:46
如果服务器是在同一个终端上启动的,那么可能是服务器的stderr正在被写入终端,而您没有捕获它。
捕获所有内容的最好方法是运行:
script output.txt
在启动服务器或客户端之前。这将启动一个新的shell,其中所有终端输出都将重定向到output.txt以及终端。然后从新的shell中启动服务器,然后启动客户端。您在屏幕上看到的所有内容(包括您的输入和从该shell写入终端的所有内容的输出)都将写入该文件。
完成后,键入" exit“退出由script
命令运行的shell。
发布于 2013-05-31 01:42:21
可以使用此语法将所有输出stderr和stdout重定向到stdout.txt
<cmd> <args> > allout.txt 2>&1
发布于 2016-04-23 15:10:59
虽然不是POSIX,但bash4有&>
操作符:
command &> alloutput.txt
https://stackoverflow.com/questions/16842014
复制相似问题