首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Linux上使用Bash将所有输出重定向到文件?

在Linux上使用Bash将所有输出重定向到文件?
EN

Stack Overflow用户
提问于 2013-05-31 01:03:42
回答 6查看 165.1K关注 0票数 117

我正在尝试将命令行程序的所有输出重定向到一个文件。我正在使用Bash。一些输出被定向到文件,但一些输出仍然出现在终端中,而不是存储到文件中。

下面描述了类似的症状:

Redirect all output to file

然而,我已经尝试了建议的解决方案(捕获stderr),但没有成功:

代码语言:javascript
复制
<cmd> <args> > stdout.txt 2> stderr.txt

文件stderr.txt已创建,但为空。

一个可能的线索是,命令行程序是与同一台机器上的服务器通信的客户端。可能某些输出来自服务器

有没有一种方法可以捕获来自终端的所有输出,而不考虑其来源?

编辑:

我已经确认丢失的输出是由服务器生成的。在单独的终端中运行命令会在两个终端中产生一些输出,我可以将命令终端的所有输出通过管道传输到一个文件中。这引发了有关如何捕获服务器输出的问题,但这是另一个问题。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-05-31 01:20:46

如果服务器是在同一个终端上启动的,那么可能是服务器的stderr正在被写入终端,而您没有捕获它。

捕获所有内容的最好方法是运行:

代码语言:javascript
复制
script output.txt

在启动服务器或客户端之前。这将启动一个新的shell,其中所有终端输出都将重定向到output.txt以及终端。然后从新的shell中启动服务器,然后启动客户端。您在屏幕上看到的所有内容(包括您的输入和从该shell写入终端的所有内容的输出)都将写入该文件。

完成后,键入" exit“退出由script命令运行的shell。

票数 74
EN

Stack Overflow用户

发布于 2013-05-31 01:42:21

可以使用此语法将所有输出stderr和stdout重定向到stdout.txt

代码语言:javascript
复制
<cmd> <args> > allout.txt 2>&1 
票数 146
EN

Stack Overflow用户

发布于 2016-04-23 15:10:59

虽然不是POSIX,但bash4有&>操作符:

command &> alloutput.txt

票数 122
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16842014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档