2011-09-23 24 views
234

我运行bash脚本,该命令如何stdout和标准错误重定向到文件

我用的执行创建日志文件中的以下

Command1 >> log_file 
Command2 >> log_file 

这只能发送标准输出,而不是终端上出现的标准错误。

我可以记录记录到文件的stderr和stdout吗?

回答

349

如果你想登录到同一文件:

command1 >> log_file 2>&1 

如果您想要不同的文件:

command1 >> log_file 2>> err_file 
+98

而只是为了节省其他人感到沮丧,请注意顺序非常重要:'2>&1'需要在'>> log_file'之后发生。 – Rufflewind

+4

为什么是'>>而不是'>'? – user3527975

+5

'>>'追加到文件,'>'覆盖。搜索“shell重定向”了解更多详情。 – Mat

26

你可以这样说,这2> & 1:

command > file 2>&1 
+12

+1,'2>&1'重定向文件描述符2(错误)到文件描述符1(标准输出) – Sjoerd

4

用途:

command >>log_file 2>>log_file 
159

重定向两个最简单的语法是:

command &> logfile 

如果要追加到文件,而不是覆盖:

command &>> logfile 
+3

不知道何时添加了此运算符,但它可能不适用于旧版本的Bash。它似乎在我的机器上运行Gnu bash v3.2.48。 –

+7

@CostiCiudatu&>>操作符似乎不适用于Mac OS X;更安全地使用Mat的解决方案。 –

+4

@JamesFennell你说得对,我没有意识到这一点。我upvoted公认的答案:) –

1

请使用command 2>file 这里2代表的文件描述符stderr。您还可以使用1代替2使标准输出被重定向到“文件”

相关问题