700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > linux重定向stderr 在Bash和其他Linux Shell中将stderr重定向到stdout的方法

linux重定向stderr 在Bash和其他Linux Shell中将stderr重定向到stdout的方法

时间:2019-01-29 10:29:46

相关推荐

linux重定向stderr 在Bash和其他Linux Shell中将stderr重定向到stdout的方法

本文介绍重定向输出及在Bash和其他Linux Shell中将stderr重定向到stdout的方法。

前言

将命令的输出重定向到文件或将其通过管道传递到另一个命令时,您可能会注意到错误消息被打印在屏幕上。

在Bash和其他Linux Shell中,执行程序时,它使用三个标准I/O流,每个流都由一个数字文件描述符表示:

0 - stdin,标准输入流。

1 - stdout,标准输出流。

2 - stderr,标准错误流。

文件描述符只是代表打开文件的数字。输入流通常通过键入键盘为程序提供信息。

程序输出进入标准输入流,错误消息进入标准错误流。默认情况下,输入流和错误流都打印在屏幕上。

重定向输出

重定向是一种捕获程序输出并将其作为输入发送到另一个程序或文件的方法。

可以使用n>运算符重定向流,其中n是文件描述符号。

省略n时,默认为标准输出流1。例如,以下两个命令是相同的,两者都会将命令输出(stdout)重定向到文件:

command > file

command 1> file

要重定向标准错误(stderr),请使用2>运算符:

command 2> file

您可以将stderr和stdout都写入两个单独的文件:

command 2> error.txt 1> output.txt

要禁止在屏幕上显示错误消息,请将stderr重定向到/dev/null:

command 2> /dev/null

将stderr重定向到stdout

将程序的输出保存到文件中时,通常会将stderr重定向到stdout,以便将所有内容都保存在一个文件中。

要将stderr重定向到stdout,并将错误消息发送到与标准输出相同的文件,请使用以下命令:

command > file 2>&1

> file将stdout重定向到file,和2>&1将stderr重定向到stdout的当前位置。

重定向的顺序很重要,例如,以下示例仅将标准输出重定向到文件,这是因为在将stdout重定向到文件之前,将stderr重定向到stdout:

command 2>&1 > file

将stderr重定向到stdout的另一种方法是使用&>构造,在Bash中,&>与2>&1的含义相同:

command &> file

结论

在命令行上工作时,了解重定向和文件描述符的概念非常重要。

要重定向stderr和stdout,请使用2>&1或&>构造。

相关主题

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。