Bash如何将标准错误stderr重定向到stdout标准输出

将命令输出重定向到文件或通过管道传递到其他命令时,可能会在屏幕上打印错误消息。

本教程介绍什么是标准输出stdout、标准输入stdin和标准错误stderr流。说明如何使用重定向运算符重定向标准输出流、将标准错误重定向到标准输出以及将程序的所有输出保存到文件中。

Bash和其他Linux shell在运行程序时使用三个标准I/O流。每个流都用数字文件描述符表示。0表示stdin标准输入流。1表示stdout标准输出流。2表示stderr标准错误流。文件描述符只是表示打开的文件的数字描述符。

输入流通常通过在键盘上输入向程序提供信息。程序的输出进入标准输出流,错误消息进入标准错误流。默认情况下,输入流和错误流都打印在屏幕上。

重定向标准输出流

重定向是程序捕获输出并将其作为输入发送到其他程序或文件的方法。流可以使用n运算符重定向。其中n是文件描述符。如果省略n,则默认值为标准输出流1。例如,以下两个命令是相同的:两者都将command的标准输出stdout重定向到文件。

Command file

Command1文件

要重定向标准错误流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,以便可以将所有内容保存到一个文件中。使用以下命令:

Command file 21

文件将command的stdout重定向到文件,21将command的stderr重定向到stdout。让我们如何验证这一点。例如,您需要确认系统中是否存在abcdefg命令。

命令abcdefg

上述命令将在终端上打印错误消息。Command not found:找不到abcdefg命令。使用以下命令时,终端不打印消息。文件文件中可能会找到错误的消息。

命令abcdefg文件21

重定向顺序也很重要。例如,下面的示例仅将stdout重定向到file文件,因为stderr被重定向到stdout。只有Stdout会重定向到file,因此终端可以看到打印错误消息。

Command21文件

将Stderr重定向到stdout的另一种方法是使用配置。在Bash中,21的含义如下:

Command file

结论

在命令行上工作时,了解重定向和文件描述符的概念很重要。使用21或配置执行Stderr和stdout重定向。如果有问题或反馈,请随时发送意见。

Linux

标准输入

标准输出

重定向

壳(shell)

LINUX

如何配置Git用户名和电子邮件地址?

2022-9-23 9:04:33

LINUX

Steam的Valve推出了Steam Deck的游戏机,并使用Arch Linux

2022-9-23 10:31:36

搜索