Linux 中的 8 个 tee 命令示例和用法
几乎所有高级用户都喜欢在与 Linux 系统交互时使用命令行界面。默认情况下,所有 Linux 命令都在标准输出流上显示它们的输出。但是,有时我们需要将此输出存储在文件中以用于调试目的。
当然,我们可以使用重定向运算符来实现这一点。但是,此方法的一个小限制是它仅将输出存储在文件中。
为了克服这个限制,我们可以使用tee 命令 从标准输入流中读取并写入标准输出流和文件。
在本实用指南中,我们将看到 tee 命令的各种示例。到本指南结束时,Linux 用户将能够使用 tee 命令来满足他们的编程需求。
tee 命令语法
tee 命令的语法类似于其他 Linux 命令。在高层次上,它分为两组——OPTIONS
和 FILES
:
$ tee [OPTIONS] [FILE1] [FILE2] [FILE3] ...
在上面的语法中,OPTIONS
和FILES
都是可选参数。
1. 在 Linux 中将输出保存到文件
如前所述,tee 命令将输出发送到标准输出和文件。要理解这一点,首先,让我们使用 echo 命令在标准输出流上显示文本:
$ echo "linux教程"
现在,让我们使用 tee 命令 将输出写入 output.txt 文件:
$ echo "linux教程" | tee output.txt
最后,使用 cat 命令查看 output.txt 文件的内容。
$ cat output.txt

在上面的输出中,我们可以看到 tee 命令 将输出发送到文件以及标准输出流。
2. 在 Linux 中将输出附加到文件
默认情况下,tee 命令 会覆盖输出文件。但是,我们可以通过启用附加模式来避免这种情况,该模式将输出附加到文件末尾:
$ echo "linux教程" | tee -a output.txt
$ cat output.txt

在此示例中,我们使用了 -a
选项来启用追加模式。
3. 在 Linux 中将输出写入多个文件
同样,我们可以使用 tee 命令将输出写入多个文件,如图所示。
$ echo "linux教程" | tee file-1.txt file-2.txt file-3.txt
在此示例中,我们提供了多个文件作为命令行参数。现在,让我们使用 head 命令来显示文件的内容:
$ head -v file-1.txt file-2.txt file-3.txt

4. 将一个命令的输出发送到另一个
此外,我们还可以将 tee 命令与管道运算符 (|)
一起使用。当我们想要存储输出并将其转发给另一个命令时,此方法会派上用场。
$ echo "linux教程" | tee example.txt | wc -c
$ cat example.txt

在此示例中,首先,我们使用 tee 命令将输出写入文件。接下来,我们使用 wc 命令来计算字符数。
5. 在 Linux 中隐藏文件输出
在前面的示例中,我们使用 tee 命令将输出发送到标准输出。但是,在一些罕见的情况下,我们希望抑制输出。在这种情况下,我们可以将输出重定向到 /dev/null 设备:
$ echo "linux教程" | tee output.txt > /dev/null
$ cat output.txt

6. 将输出写入特权文件
有时,我们需要将输出写入特权文件。但是,我们无法仅使用 tee 命令来实现这一点。在这种情况下,我们可以结合使用 sudo 和 tee 命令。
首先,让我们使用 chown 命令更改文件的所有权:
$ sudo chown root:root output.txt
接下来,让我们使用以下命令将一些文本附加到 output.txt 文件:
$ echo "linux教程" | sudo tee -a output.txt
最后,让我们验证文件是否已成功更新。

7. 在 Linux 中编辑特权文件
以类似的方式,我们可以使用 sudo 和 tee 命令的组合来编辑特权文件。要理解这一点,首先,让我们在 Vim 编辑器中打开一个特权文件并向其中添加一些文本:
$ vim output.txt
现在,让我们使用下面的 Vim 命令来更新文件:
:w !sudo tee %
8.忽略中断信号(SIGINT)
在 Linux 中,我们使用 Ctrl+c
组合键来发送 SIGINT 信号。此信号的默认行为是终止进程。但是,我们可以使用 -i
选项来忽略中断:
$ echo "linux教程" | tee -i example.txt
$ cat example.txt

在本指南中,我们通过一些实际示例了解了 tee 命令。用户在从命令行界面使用 Linux 系统时可以参考本指南。
您知道 Linux 中 tee 命令的其他最佳示例吗?请在下面的评论中告诉我们您的观点。