如何在 Linux 中使用 tee 命令 [8 个实用示例]
几乎所有高级用户在与 Linux 系统交互时都喜欢使用命令行界面。默认情况下,所有 Linux 命令都会在标准输出流中显示其输出。但是,有时我们需要将此输出存储在文件中以进行调试。
当然,我们可以使用重定向运算符来实现这一点。但是,这种方法的一个小限制是它只将输出存储在文件中。
为了克服这个限制,我们可以使用tee 命令从标准输入流读取并写入标准输出流和文件。
在本实用指南中,我们将看到 tee 命令的各种示例。在本指南结束时,Linux 用户将能够使用 tee 命令来满足他们的编程需求。
tee 命令语法
tee命令的语法与其他 Linux 命令类似。从高层次上讲,它分为两组 -OPTIONS
和FILES
:
$ tee [OPTIONS] [FILE1] [FILE2] [FILE3] ...
在上面的语法中,OPTIONS
和FILES
都是可选参数。
1. 在 Linux 中将输出保存到文件
如前所述,tee命令将输出发送到标准输出以及文件。为了理解这一点,首先,让我们使用echo 命令在标准输出流上显示文本:
$ echo "example.com"
现在,让我们使用tee 命令将输出写入output.txt文件:
$ echo "example.com" | tee output.txt
最后,使用cat 命令查看output.txt文件的内容。
$ cat output.txt
在上面的输出中,我们可以看到tee 命令将输出发送到文件以及标准输出流。
2. 在 Linux 中将输出附加到文件
默认情况下,tee 命令会覆盖输出文件。但是,我们可以通过启用附加模式来避免这种情况,该模式会将输出附加到文件末尾:
$ echo "example.com" | tee -a output.txt $ cat output.txt
在这个例子中,我们使用了-a
选项来启用附加模式。
3. 在 Linux 中将输出写入多个文件
类似地,我们可以使用tee命令将输出写入多个文件,如图所示。
$ echo "example.com" | 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 "example.com" | tee example.txt | wc -c $ cat example.txt
在这个例子中,首先,我们使用tee命令将输出写入文件。接下来,我们使用wc 命令来计算字符数。
5. 在 Linux 中隐藏文件输出
在前面的示例中,我们使用tee命令将输出发送到标准输出。但是,在某些罕见情况下,我们想要抑制输出。在这种情况下,我们可以将输出重定向到/dev/null设备:
$ echo "example.com" | tee output.txt > /dev/null $ cat output.txt
6. 将输出写入特权文件
有时,我们需要将输出写入特权文件。但是,仅使用tee命令无法实现这一点。在这种情况下,我们可以使用sudo和tee命令的组合。
首先,让我们使用chown 命令更改文件的所有权:
$ sudo chown root:root output.txt
接下来,让我们使用以下命令将一些文本附加到output.txt文件:
$ echo "example.com" | 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 "example.com" | tee -i example.txt $ cat example.txt
在本指南中,我们通过一些实际示例了解了tee命令。用户在从命令行界面使用 Linux 系统时可以参考本指南。
您知道 Linux 中tee命令的其他最佳示例吗?请在下面的评论中告诉我们您的观点。