📜  将标准错误重定向到标准输出 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:53:53.642000             🧑  作者: Mango

将标准错误重定向到标准输出 - Shell/Bash

在Shell/Bash编程中,我们可能会遇到一些错误信息需要输出到标准错误(stderr),而不是标准输出(stdout)。错误信息通常包含程序中出现的问题和异常,如越界访问、操作系统错误等等。为了方便调试和诊断,我们可能需要将标准错误信息记录下来,而不是直接输出到终端。

本文将介绍如何将标准错误重定向到标准输出。

背景知识

在Unix/Linux中,“一切皆文件”的概念很重要。标准输出和标准错误也是文件,分别对应文件描述符1和2。在Bash脚本中,可以使用符号“>”和“>>”将标准输出重定向到文件,其中“>”表示覆盖写入,而“>>”表示追加写入。同样,可以使用符号“2>”和“2>>”将标准错误重定向到文件。

重定向标准错误信息到标准输出

重定向标准错误信息到标准输出很简单,只需要使用符号“2>&1”即可。

命令 2>&1

例如,下面的命令将标准错误输出到标准输出:

ls nonexistent_file 2>&1

输出结果:

ls: cannot access 'nonexistent_file': No such file or directory

可以看到,错误信息被输出到了标准输出。

将标准错误信息和标准输出信息同时输出到文件

有时候,我们需要同时将标准错误信息和标准输出信息重定向到同一个文件中。这可以通过以下命令实现:

命令 > file 2>&1

例如,下面的命令将标准输出和标准错误输出到同一个文件中:

ls nonexistent_file > ls_output.txt 2>&1

输出结果:

cat ls_output.txt
ls: cannot access 'nonexistent_file': No such file or directory

可以看到,标准错误和标准输出信息都被输出到了同一个文件中。

结论

本文介绍了如何将标准错误重定向到标准输出。在Shell/Bash编程中,我们可以使用符号“2>&1”将标准错误输出到标准输出,或者使用符号“> file 2>&1”将标准错误和标准输出输出到同一个文件中。这些命令可以帮助我们更好地调试和诊断我们的脚本和程序。