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

时间:2020-01-09 10:45:06  来源:igfitidea点击:

当我们在bash提示符下运行命令时,通常会将该命令的输出直接打印到终端,以便我们可以立即读取。但是bash还允许我们重定向任何命令的输出,将其保存到文本文件中,以便稍后查看输出。

从Linux和macOS到Windows 10的基于Ubuntu的bash环境,它都可以在bash上的任何操作系统上运行。

方法一:仅将输出重定向到文件

要使用bash重定向,请运行命令,指定>或者>>运算符,然后提供要将输出重定向到的文件的路径。

  • >将命令的输出重定向到文件,替换文件的现有内容。

  • " >>"将命令的输出重定向到文件,并将输出添加到文件的现有内容。

从技术上讲,这会将标准输出重定向到标准输出,即屏幕输出到文件。

这是一个简单的例子。 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

就像>>运算符一样,这会将输出添加到文件末尾。