tee 命令是个啥?我们通过例子来看一下

系统 Linux
tee 命令的结果是,你既可以在屏幕上看到命令的输出,同时还可以将输出保存到文件中。

tee 命令从标准输入读取数据,同时写入到标准输出和文件中。

也就是说,tee 命令的结果是,你既可以在屏幕上看到命令的输出,同时还可以将输出保存到文件中。

换言之,你有一个输入,它会被引导到两个输出。

要理解这个问题,首先你需要知道 Linux 中重定向的概念。关于重定向,可以参阅我们先前的文章:

Linux中的输入、输出和错误重定向

Linux 中的管道是什么?管道重定向是如何工作的?

该命令以电力、管道系统和其他行业中使用的 T 形接头命名,它们被称为“T”,因为它们类似于字母“T”。

以上是关于 tee 命令用途的介绍,现在我们来看看在 Linux 中怎样使用 tee 命令。

tee 命令示例

tee命令有一个简单的语法:

tee [OPTION] [FILE]

tee 命令从标准输入读取数据,所以它总是和与另外一个命令一块被使用。

我们来看几个例子。

显示命令输出并将其保存到文件

比如我们想要计算某个文件中有多少行文字,我们要在屏幕上看到它到底有多少行,同时还想要把这个行数保存到另一个文件中。

[gliu@fedora~]$ wc -l testfile.txt | tee count.txt
20 testfile.txt

文件 count.txt 原本并不存在,因此它将创建一个名为 count.txt 的新文件。如果你查看文件 count.txt 的内容,会发现其与显示在屏幕上的内容是相同的:

[gliu@fedora~]$ cat count.txt  
20 testfile.txt

注意:默认情况下,tee 命令会覆盖原文件的内容。如果需要,可以使用 -a 选项来让其在文件中追加(而不是删除):

wc -l testfile.txt | tee -a count.txt

显示命令输出并将其保存到多个文件

如果要将命令输出保存到多个文件,也可以使用 tee 命令,只需指定文件即可:

[gliu@fedora~]$ wc -l testfile.txt | tee count1.txt count2.txt
20 testfile.txt

可以验证上述两个文件中是否存储了相同的内容:

[gliu@fedora~]$ cat count1.txt count2.txt  
20 testfile.txt
20 testfile.txt

在 Linux 中,是可以通过 cat 命令来查看多个文件的。

将命令输出解析到另一个命令,同时将其保存到文件中

我们并不总是需要查看命令输出,由于它是标准输出,因此可以通过管道将其传输到另一个命令。

看下面的例子:

[gliu@fedora~]$ ls -l | tee count.txt | wc -l
7

上述命令中,ls -l 命令的输出通过管道传输到 tee 命令,tee 命令将 ls -l 的输出保存在 count.txt 文件中。然后,输出信息没有显示在屏幕上,而是又通过管道传输到了 wc -l 命令,该命令用于计算行数。

在本例中,我们通过屏幕看到的是 wc -l 命令的输出。ls -l 命令的输出被存储在了文件 count.txt 中。

[gliu@fedora~]$ cat count.txt  
total 20
-r--r--r-- 1 gliu gliu 456 Dec 11 21:29 testfile.txt
-rw-r--r-- 1 gliu gliu 0 Jan 10 16:03 count.txt
-rw-r--r-- 1 gliu gliu 356 Dec 17 11:39 file1.txt
-rw-r--r-- 1 gliu gliu 356 Dec 17 09:59 file2.txt
-rw-r--r-- 1 gliu gliu 356 Dec 11 21:35 sherlock.txt
drwxr-xr-x 3 gliu gliu 4096 Jan 4 20:10 target

我们可以在平时工作中,依实际情况尽可能的发挥想象力,来使用 tee 命令。比如在分析一个很长的输出(比如日志文件)时,使用它会很方便。实时查看并将其存储在文件中以供将来参考也是非常有用的一个操作。

以上就是本次分享全部内容,欢迎讨论。

责任编辑:庞桂玉 来源: TIAP
相关推荐

2011-10-12 11:07:12

iCloudiOS5苹果

2017-03-03 10:37:07

Java泛型设计

2018-12-21 15:40:33

2021-08-05 07:28:27

SQL触发器结构

2019-08-21 10:15:20

vue组件前端

2018-07-25 10:22:02

编程语言Python内存管理

2010-03-15 10:35:46

三层交换

2023-10-23 10:20:25

2020-07-17 08:36:16

JVM性能监控

2021-02-02 14:55:48

React前端高优先

2018-03-12 15:26:00

Linux命令tee

2021-08-09 09:39:59

Docker部署镜像

2019-06-17 05:00:53

预测性维护物联网IOT

2009-07-27 09:31:06

定义JavaScripASP.NET

2020-09-17 09:18:49

iOS 14苹果推送

2017-07-14 14:12:10

AndroidRecyclerVie

2018-12-04 15:50:03

转行Python爬虫

2022-03-02 10:53:22

Postman工具开发

2018-12-20 11:20:47

物联网设备物联网

2021-06-24 07:54:20

vite 静态处理public
点赞
收藏

51CTO技术栈公众号