如何在 Linux 上将输出通过管道传输到文件
在 Linux 系统上使用 Bash shell 时,我们可以将命令的输出发送到其他地方,例如将其传递给另一个命令或文件。这称为 Bash shell 重定向。它在许多不同的场景中都很有用,并且是学习使用 Bash shell 和 Bash 脚本的最基本和最重要的组成部分之一。
在本教程中,我们将向您介绍标准 Bash shell 重定向运算符,它允许我们将标准输出和/或标准错误发送到文件。您还将了解 tee 命令,它可以通过管道将输出传输到文件,同时在终端屏幕上显示输出。让我们深入研究下面的一些示例,看看它是如何工作的。
在本教程中您将学习:
如何将标准输出和/或标准错误重定向到文件
如何使用
tee
命令将输出通过管道传输到文件
如何在 Linux 上将输出通过管道传输到文件 – 命令示例
我们首先介绍如何将标准输出重定向到文件。如果您已经掌握了这些 Bash 基础知识,请随意跳至示例命令。
您通常使用 >
进行重定向,并将输出附加到现有文件,您可以使用 >>
。在这里,我们将 echo 命令的输出发送到不同的文件:
$ echo "linuxconfig.org" > new-file.txt
AND
$ echo "linuxconfig.org" >> existing-file.txt
使用这些命令,标准输出将被重定向到文件,并且标准错误将显示在屏幕上。如果您是 Linux 新手,标准输出只是运行命令或脚本时的常见预期输出,标准错误是发生的任何错误消息。
要重定向标准错误,我们可以使用 2>
运算符。这将使标准输出出现在我们的屏幕上,并将所有错误消息发送到文件中。
$ echo "linuxconfig.org" 2> new-file.txt
了解了基础知识后,我们现在将介绍用于将标准输出和/或标准错误重定向到文件的各种命令示例,并了解如何使用 tee 命令将输出通过管道传输到文件。
你知道吗?
将输出重定向到文件时,内置的 Bash 运算符通常就足够了,但偶尔使用带有管道的 tee
命令会产生问题。如果我们需要同时在屏幕上显示输出,这是必要的。
您可以使用管道和
tee
命令,而不使用>
进行正常的 Bash 重定向,而无需任何额外选项。您只需要指定要为其写入标准输出的文件的名称。然后,输出将显示在您的终端中,并且还将发送到文件中。$ echo example output | tee file.txt
“示例输出”文本以及本示例中的
file.txt
均发送到我们的终端。您还可以使用
tee
将标准输出同时发送到多个文件。只需在命令中指定每个文件名的路径即可。$ echo example output | tee file1 file2 file3
如果您还希望将标准错误重定向到文件,而不是仅在终端中显示它,则可以在管道到
tee
之前添加2>&1
运算符。$ echo example output 2>&1 | tee file.txt
要附加到文件而不是覆盖它(相当于 Bash
>>
运算符),您可以使用-a
或--append
带有tee
的选项。$ echo example output | tee -a file.txt
如果您想在屏幕上看到标准输出和标准错误,同时将它们附加到同一文件,我们可以使用
-a
(附加)选项与tee
和2>&1
运算符。$ echo "linuxconfig.org" 2>&1 | tee -a existing-file.txt
要使用 Bash 运算符将标准输出和标准错误重定向到同一文件,请使用以下命令语法。具体来说,将
2>&1
附加到常用命令的末尾。$ echo "linuxconfig.org" > new-file.txt 2>&1
实现此功能的一种稍微简单的方法是使用
&>
运算符。请注意,这在 Bash 和 zsh 中运行良好,但在其他 shell 中则不然,因此请使用前面的示例以获得与其他系统的最大兼容性。$ echo "linuxconfig.org" &> new-file.txt
要将标准输出和标准错误附加到已存在的文件,请使用与上面相同的语法,但使用
>>
重定向运算符。$ echo "linuxconfig.org" >> existing-file.txt 2>&1
要将标准输出重定向到一个文件,并将标准错误重定向到另一文件,请使用以下语法。
$ echo "linuxconfig.org" 2> std-err.txt 1> std-out.txt
结束语
在本教程中,我们了解了如何将输出通过管道传输到 Linux 系统上的文件。这可以通过使用内置的 Bash 运算符 >
和 >>
以及 1>
、2>
来完成>、2>&1
用于特殊场景。此外,我们可以使用 tee 命令,该命令通过将输出(标准输出和可选的标准错误)传输到文件来提供不同的功能,同时仍然在终端屏幕上显示输出。由于这些方法略有不同,因此您可以使用正确的工具来完成手头的工作。