如何在Windows,Mac和Linux上将命令行输出保存到文件

在“终端"窗口中运行命令时,该命令的输出通常会打印到终端或屏幕上,因此您可以立即阅读。如果要保存命令,也可以将命令的输出打印到文件中。

将命令的输出保存到文件中对于尝试诊断问题很有帮助。要获得技术支持的帮助,您可能必须在计算机上运行某些命令,然后将结果发送给支持团队。在命令行上使用输出重定向很容易。

今天我们将介绍如何在Windows,Mac和Linux上的bash shell中将命令的输出发送到文本文件。

注意::我们将在示例中使用Mac Terminal,但在Linux上的bash shell中,其工作方式相同。

将输出重定向到文件仅

有两个用于将命令输出重定向到文件而不是屏幕的操作符。

>符号将创建一个新文件(如果没有)存在,或覆盖文件(如果已经存在)。 >>还会创建一个新文件(如果不存在),但是会将文本附加到文件末尾(如果已经存在),而不是覆盖文件。

— Xavier Mertens? (@xme)2017年8月5日

要将命令的输出重定向到文件,请键入命令,并指定>>>运算符,然后提供要将输出重定向到的文件的路径。例如,ls命令列出当前目录中的文件和文件夹。当您运行以下命令时,文件和文件夹列表将被写入 TerminalOutput 文件夹中的 ls_output.txt 文件。

替换< strong> / path / to / file 以及要使用的文件的完整路径。

ls > /path/to/file

这是我们示例的命令。

ls > /Users/lorikaufman/TerminalOutput/ls_output.txt

查看终端窗口中文件的内容,请使用 cat 命令,如以下命令所示。再次,将 / path / to / file 替换为要查看的文件的完整路径。

cat /path/to/file

>运算符替换了每次使用它来重定向输出时,都会使用一个现有文件。如果要将多个命令的输出保存到单个文件,请改用>>运算符。如果命令的输出已经存在,它会将命令的输出附加到指定文件的末尾。如果文件不存在,则会创建一个新文件。

例如,我们将系统信息附加到上面创建的文件的末尾。因此,在下面的行中, uname -a 是命令,后跟>>重定向运算符。然后,是要向其中添加 uname 命令输出的文件的完整路径。

中的 -a 参数> uname 命令将打印所有可用的系统信息。

uname -a >> /Users/lorikaufman/TerminalOutput/ls_output.txt

要在“终端"窗口中查看带有附加信息的文件,请输入以下命令以及文件的完整路径。

cat /Users/lorikaufman/TerminalOutput/ls_output.txt

重复此过程多次,直到将命令输出附加到文件末尾为止。

这是发送 ls 输出的另一个示例>命令作为目录树,并以递归方式列出子目录( R 参数),每行列出一个文件( 1 参数)。

ls -1R > /Users/lorikaufman/TerminalOutput/dir_tree.txt

然后,我们使用 cat 命令(如前所述)在“终端"窗口中查看文件的内容。

cat /Users/lorikaufman/TerminalOutput/dir_tree.txt

将输出打印到屏幕并将其重定向到文件

>>>运算符不会在屏幕上显示命令的输出。输出仅发送到文件。

如果要将输出发送到文件并在屏幕上查看,请使用 tee 命令而不是 >>>运算符。

— Zeke Sikelianos(@zeke)2017年8月29日

要使用 tee 命令,您必须使用管道操作符,竖线(,将正在运行的命令(例如 ls )的输出通过管道传输到 tee 命令。 > | )。例如,以下命令获取 ls 命令的输出并将其通过管道传输到 tee 命令中。然后,使用该文件的完整路径, tee 命令将该输出发送到屏幕和您指定的文件。

ls | tee /Users/lorikaufman/TerminalOutput/ls_output.txt

以上命令替换文件中的所有内容或创建一个不存在的新字符,就像>运算符一样。我们使用以下 cat 命令在“终端"窗口中查看文件的内容。

cat /Users/lorikaufman/TerminalOutput/ls_output.txt

要使用 tee 命令将输出打印到屏幕并将其附加到文件末尾,输入以下命令。在这里,我们使用 uname -a 命令将完整的系统信息添加到文件的末尾,就像我们使用>>运算符所做的那样,但是发送输出

uname -a | tee -a /Users/lorikaufman/TerminalOutput/ls_output.txt

以下命令是 tee 版本,该版本将目录树递归打印到文件和屏幕上,每行一个文件,就像我们使用>运算符进行操作。

ls -1R | tee /Users/lorikaufman/TerminalOutput/dir_tree.txt

然后,再次使用 cat 命令查看文件的内容。

cat /Users/lorikaufman/TerminalOutput/dir_tree.txt

但是,等等,还有更多

还有很多方法可以将输出(包括错误)重定向到文件。您可以在“高级Bash脚本指南"的“ I / O重定向"一章中了解有关用于重定向输出的不同运算符和命令。

Mac用户还应将我们的Mac Terminal命令备忘单添加为书签。

标签: Linux Bash Shell 终端