5

Linux Tee 命令真实示例详细指南-51CTO.COM

 2 years ago
source link: https://os.51cto.com/article/708331.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

使用 Linux 终端时,您可能需要执行命令将一些数据写入文件并进一步处理其输出。命令是一个可以帮助您实现这一目标的强大实用程序​​tee​​。这篇文章将为您提供有关tee命令的详细指南,并向您展示tee命令的一些真实示例。

什么是 Tee 命令?

这个​​tee​​命令是一个 Linux 命令,它将标准输入复制到标准输出(通常是您的屏幕)和指定文件。这对于将命令连接在一起非常有用,并且当您想要将输出重定向到单个或多个文件并仍然进一步处理输出时非常方便。该​​tee​​命令得名于水管工在连接多根水管时使用的 T 型分流器。如果您不熟悉 Linux 终端,这听起来可能有点复杂。让我们尝试使用图形演示。

f6fe8ce8789d8a76577141843440b22da551c6.png

假设我们有一个名为​​linuxmi.txt​​. 我们要对该文本文件进行排序,将输出写入文件,并在终端上显示项目总数。我们使用下面的两个命令:

linuxmi@linuxmi:~/www.linuxmi.com$ sort linuxmi.txt > 300.txt
linuxmi@linuxmi:~/www.linuxmi.com$ wc -l 300.txt
8 300.txt
872dc6695502e7bf204672ac441e4c6c449bf4.png

但是,我们可以使用下面的 tee 命令来简化它。

linuxmi@linuxmi:~/www.linuxmi.com$ sort linuxmi.txt | tee 300.txt | wc -l
764b27104ed3a70d7a15998d64c52d5a50aa22.png

安装 Tee 命令

该​​tee​​命令是随 GNU Coreutils 安装的工具之一。因此,它预装在任何 Linux 发行版上,您无需手动安装。但是,您可以通过运行以下命令来确认该实用程序是否可用。

linuxmi@linuxmi:~/www.linuxmi.com$ which tee
/usr/bin/tee
46dd1392907c72d9a1906833fe689ade0b606f.png

要检查系统上运行的tee命令的版本,请运行以下命令。

linuxmi@linuxmi:~/www.linuxmi.com$ tee --version
01b6037663635993871738d7a497011bbbce54.png

Tee 命令的基本语法

tee 命令的基本语法如下:tee [选项]... [文件]...这里的 [ 选项 ] 可能包括:

  • ​-a​​:防止 tee 命令覆盖现有文件,而是追加数据。
  • ​--version​​:此选项显示当前安装的 tee 命令版本。
  • ​--help​​: 此选项列出了 tee 命令可用的所有选项

tee 命令应用程序

现在您已经对 Tee 命令有了很好的理解,让我们看一些实际示例,您可以在这些示例中应用这个强大的命令行实用程序。

1. 将 Ping 命令的输出写入文件

您一定遇到过 ping 命令,尤其是在诊断网络连接时。Ping 用于测试网络上主机的可用性。例如,如果你正在配置一个服务器,你可以通过执行类似的命令来检查它是否在线ping [服务器地址]例如,

linuxmi@linuxmi:~/www.linuxmi.com$ ping 192.168.174.170
a82cace635340fcc630021c31a4896b0fe846d.png

现在,如果我们想将此输出写入文件同时仍显示来自服务器的响应,我们可以执行以下命令。

linuxmi@linuxmi:~/www.linuxmi.com$ ping yahoo.com | tee pingLinuxMi.txt

下图显示了写入文件的 ping 输出以及​​stdout​​.

f9268c946d2aa54c479508e0167ed3087c1d8f.png

2. 使用 Tee 命令将数据附加到文件中

默认情况下,当您执行​​tee​​命令将输出写入现有文件时,它会自动覆盖所有现有数据。例如,​​tee​​如果我们运行具有相同文件名的新 ping 命令来写入输出,将自动覆盖现有数据。我们将使用​​-a​​如下语法所示的选项来防止这种情况。

ping -a [文件名]

linuxmi@linuxmi:~/www.linuxmi.com$ ping 192.168.174.170 | tee -a pingLinuxMi.txt
235e81d019bb9e66b8c608d45f36d509fe7c9e.png

3. 使用 Tee 写入多个文件

如果您使用其他 Linux 命令来操作多个文件,这将非常容易。要使用​​tee​​命令写入多个文件,我们将使用以下语法。

[你的命令] | tee file1 file2 file3 file4
a54961733b4c1739b035163f00c07d26ba636c.png

4. 使用 Tee 将命令输出重定向到另一个命令

除了将输出写入文件之外,还可以使用​​tee​​命令将一个命令的输出重定向到另一个命令。让我们使用下面的示例。我们想使用​​ls​​命令列出主目录中的所有文件,然后使用 ​​wc -l​​ 命令计算存在的文件总数。由于 ​​tee​​ 我们可以使用单行命令,而不是编写两个不同的命令,如下所示。

linuxmi@linuxmi:~/www.linuxmi.com$ ls ~ | tee linuxmi.txt | wc -l
62cf128684d8007a9ff8786eee5168441ec5c5.png

5. 执行 Tee 时忽略中断

为了停止终端中运行的任何命令,我们总是使用​​Ctrl + C​​键盘组合来中断进程。如果您正在使用 Tee 运行一项关键任务,则可以使用​​-i​​选项防止键盘中断 ( ​​SIGINT​​)。使用下面的语法。

[command] | tee -i [file-name]

6.隐藏tee输出

有时您执行的命令会在终端中打印出许多不必要的输出。幸运的是,您可以通过将输出重定向到​​/dev/null​​来隐藏输出。使用下面的语法。

[command] | tee output_file_name >/dev/null

在下图中,您可以看到我们执行了 ping 命令,但终端中没有打印输出。但是,它已全部写入指定的输出文件。

329bca0962cd16c17939472fcddb6e892fccc8.png

7. 将 Tee 与 sudo 一起使用

在某些情况下,您希望将数据写入root用户拥有的文件。我们称这个文件为​​linuxmi.conf​​。如果我们执行下面的命令,我们会得到错误。

linuxmi@linuxmi:~/www.linuxmi.com$ echo "300" > linuxmi.conf
bash: linuxmi.conf: 权限不够
348fdd4835b9f7d5c8b3974c2ff0253a93e743.png

为了解决这个问题,我们可以使用 Tee 命令添加到​​sudo​​我们的命令中,如下所示。

linuxmi@linuxmi:~/www.linuxmi.com$ echo "300" > linuxmi.conf
665047364f854917228490a0bdc51f4cccf709.png

结论

至此,我相信您现在已经很好地理解了 tee 命令以及如何使用它来执行您的日常任务。通过在你的系统上练习更多的例子,你应该很高兴。如果您有任何反馈或问题,请随时在评论中告诉我们,我们会尽快回复您。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK