📜  回显到文件 bash - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:07:32.723000             🧑  作者: Mango

回显到文件

在bash里,我们可以使用重定向符 >>> 将命令的输出重定向到文件中。但有时候,我们想要将某个命令的输出不仅仅在终端上显示,也希望将它保存到文件里用来之后查看或分析。这时候,就可以使用 tee 命令将命令的输出同时传递给标准输出和文件。

tee 命令基础用法

tee 命令接收标准输入,并将它输出到标准输出和指定文件。默认情况下,tee 命令会用覆盖方式写到文件里,但你也可以使用 -a 选项来指定使用追加方式。

$ command | tee file.txt

上述命令将 command 命令的输出导入 tee 命令,tee 命令会将输出同时输出到终端上和 file.txt 文件中。

将包含变量的命令回显到文件

如果希望将一个包含变量的命令的输出保存到文件中,我们需要使用双引号 "..." 而非单引号 '...' 来将整个命令框起来,以允许变量的展开。

例如,如果想要将一个包含变量的命令 echo $PATH 的输出保存到 file.txt 中,可以这样做:

$ echo "$PATH" | tee file.txt
将命令的执行结果同时显示到终端和保存到文件中

有时候,我们在输入命令后,想要同时查看它们在终端中的执行结果并将输出保存到文件中,这时候我们可以使用如下命令:

$ command | tee file.txt /dev/tty

上述命令中 /dev/tty 表示将命令的输出重定向到终端上。

将错误信息和正确信息分别保存到不同文件

我们可以使用 2> 重定向符将命令的错误信息重定向到指定文件中。例如,下面的命令将只将执行结果保存到 out.txt 文件中,将错误信息保存到 err.txt 文件中。

$ command > out.txt 2> err.txt

如果我们希望同时将执行结果和错误信息显示在终端上,可以这么做:

$ command 2> >(tee err.txt) | tee out.txt

上述命令中 2> >(tee err.txt) 表示将错误信息重定向到标准输出,并交给 tee 命令将它同时显示在终端上和保存到 err.txt 文件中。接着使用管道符 | 将命令的执行结果交给 tee 命令将它同时显示在终端上和保存到 out.txt 文件中。

总结

在bash里,我们可以使用 tee 命令将命令的输出同时传递给标准输出和文件。同时,我们也学习了将包含变量的命令输出保存到文件中、将执行结果和错误信息分别保存到不同文件中等技巧。