如何将命令的输出保存到 Bash 中的文件(又名 Linux 和 macOS 终端)

当您在 bash 提示符下运行命令时,它通常会将该命令的输出直接打印到终端,以便您可以立即阅读。但 bash 还允许您“重定向”任何命令的输出,将其保存到文本文件中,以便您稍后查看输出。
这适用于任何操作系统上的 bash,从 Linux 和 macOS 到 Windows 10 的基于 Ubuntu 的 bash 环境。
选项一:仅将输出重定向到文件
要使用 bash 重定向,您运行命令,指定 >
或 >>
运算符,然后提供您希望输出重定向到的文件的路径。
-
>
将命令的输出重定向到文件,替换文件的现有内容。 -
>>>
将命令的输出重定向到文件,将输出附加到文件的现有内容。
从技术上讲,这会将“stdout”(标准输出,即屏幕)重定向到文件。
这是一个简单的例子。 ls
命令列出当前目录中的文件和文件夹。所以。当您运行以下命令时,ls
将列出当前目录中的文件和文件夹。但它不会将它们打印到屏幕上——它会将它们保存到您指定的文件中。
ls > /path/to/file
您不必指定现有文件的路径。指定任何有效路径,bash 将在该位置创建一个文件。

如果您查看文件的内容,您将看到 ls
命令的输出。例如,cat
命令将文件的内容打印到终端:
cat /path/to/file

请记住,
运算符来代替。例如,以下命令会将系统信息附加到您指定的文件中:>
运算符用命令的输出替换文件的现有内容。如果你想将多个命令的输出保存到一个文件中,你可以使用 >>>
uname -a >> /path/to/file
如果该文件不存在,bash 将创建该文件。否则,bash 将保留文件的现有内容并将输出附加到文件末尾。
当您查看文件的内容时,您会看到第二个命令的结果附加到文件的末尾:

您可以根据需要多次重复此过程,以将输出附加到文件末尾。
选项二:正常打印输出并将其重定向到文件
您可能不喜欢使用 >
或 >>
运算符重定向输出,因为您不会在终端中看到命令的输出。这就是 tee
命令的用途。 tee 命令将它接收到的输入打印到屏幕上并同时将它保存到一个文件中。
要将命令的输出通过管道传输到 tee
,将其打印到屏幕并将其保存到文件,请使用以下语法:
command | tee /path/to/file
这将用命令的输出替换文件中的任何内容,就像 >
运算符一样。

要将命令的输出通过管道传输到 tee
,打印到屏幕并将其保存到文件,但将其附加到文件末尾:
command | tee -a /path/to/file
这会将输出附加到文件末尾,就像 >>
运算符一样。

bash shell 包括一些执行类似功能的附加高级运算符。如果您正在编写 bash 脚本,它们将特别有用。有关更多详细信息,请参阅高级 Bash 脚本指南中的 I/O 重定向章节。