Linux 中的 Tee 命令详解及示例
tee 命令从标准输入读取并写入标准输出和文件。
结果是,您可以看到命令的输出并同时将其保存到文件中。
换句话说,您有一个输入,它被引导至两个输出。
如果您熟悉Linux 中的重定向概念,这一切都会更有意义。
该命令以电力、管道和其他行业中使用的三通连接器命名。它们被称为三通,因为它们类似于字母“T”。
现在您已经了解了 tee 命令的用途,让我们看看如何在 Linux 中使用 tee 命令。
Tee 命令示例
tee 命令的语法很简单:
tee [OPTION] [FILE]
请记住,tee 从标准输入读取,因此几乎所有时候,您都会在另一个命令的结合中使用它。
让我给你举几个例子。
1. 显示命令输出并保存到文件
让我们举一个简单的例子,你想计算一个文件中的行数。你想看看文件中有多少行,并将该数字保存到另一个文件中。
abhishek@itsfoss:~$ wc -l agatha.txt | tee count.txt
20 agatha.txt
文件 count 不存在,因此它将创建一个名为 count 的新文件。如果您看到文件 count 的内容,您将看到与显示屏上相同的输出。
abhishek@itsfoss:~$ cat count.txt
20 agatha.txt
注意:默认情况下,tee 命令将覆盖文件内容。如果您愿意,可以使用附加选项 -a:
wc -l agatha.txt | tee -a count.txt
2.显示命令输出并保存到多个文件
如果要将命令输出保存到多个文件,也可以使用 tee 命令执行此操作。只需指定文件即可。
abhishek@itsfoss:$ wc -l agatha.txt | tee count1.txt count2.txt
20 agatha.txt
您可以验证相同的输出是否存储在上述两个文件中。
abhishek@itsfoss:~$ cat count1.txt count2.txt
20 agatha.txt
20 agatha.txt
我希望你知道,在 Linux 中你可以使用 cat 命令同时查看多个文件。
3. 将命令输出解析为另一个命令,同时将其保存到文件
您并不总是需要查看命令输出。由于它是标准输出,因此您可以将其通过管道传输到另一个命令。
以下面的命令为例。
abhishek@itsfoss:~$ ls -l | tee count.txt | wc -l
7
这里发生的事情是“ls -l”命令的输出通过管道传输到 tee 命令。现在 tee 命令将“ls -l”的输出存储在 count.txt 文件中,但不是显示此输出,而是将其通过管道传输到用于计算行数的“wc -l”命令。
在这种情况下,您看到的输出是“wc -l”命令的输出。“ls -l”命令的输出存储在文件 count.txt 中。
abhishek@itsfoss:~$ cat count.txt
total 20
-r--r--r-- 1 abhishek abhishek 456 Dec 11 21:29 agatha.txt
-rw-r--r-- 1 abhishek abhishek 0 Jan 10 16:03 count.txt
-rw-r--r-- 1 abhishek abhishek 356 Dec 17 11:39 file1.txt
-rw-r--r-- 1 abhishek abhishek 356 Dec 17 09:59 file2.txt
-rw-r--r-- 1 abhishek abhishek 356 Dec 11 21:35 sherlock.txt
drwxr-xr-x 3 abhishek abhishek 4096 Jan 4 20:10 target
结论
使用 tee 命令完全取决于您的想象力和情况。当我必须分析日志文件等冗长的输出时,我发现它很方便。实时查看它并将其存储在文件中以供将来参考会有所帮助,并节省我一些时间。
希望您喜欢我在此处列出的 tee 命令示例。如果您想到了一些非常棒的方法来使用此命令,请在评论部分与我们分享。