首页 > 技术文章 > Linux tee命令简介

my-show-time 2021-01-06 10:21 原文

Linux tee命令简介

tee 简介

  功能说明:读取标准输入的数据,并将其内容输出成文件。
  语   法:tee [-ai][--help][--version][文件…]
  补充说明:tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。我们可利用tee把管道导入的数据存成文件,甚至一次保存数份文件。
  参   数:-a 附加到既有文件的后面,而非覆盖它。如果给予tee指令的文件名称已经存在,预设会覆盖该文件的内容。加上此参数后,数据会新增在该文件内容的最后面,而不会删除原先之内容。
       -i 忽略中断信号
       --help 在线帮助
       --version 显示版本信息

范   例:

1 tee file   //将标准输入覆盖写入到file中,同时在退出时再打印一遍
2 tee -a file   //同上,只不过时追加不是覆盖
3 tee -   //输出到标准输出两次
4 tee - -   //输出到标准输出三次
5 tee file1 file2 -   //输出到标准输出两次,并写到那两个文件中
6 ls | tee file  //命令标准输出保存至file
7 ls "*" 2>&1 | tee ls.txt  //标准错误也被tee读取

实  例:

1、显示lsscsi的输出结果,同时将输出结果保存到aa、bb、cc三个文件#

[root@localhost ~]# lsscsi -l |tee aa cc dd
[0:0:0:0] storage HP P410i 5.70 - 
state=running queue_depth=1024 scsi_level=6 type=12 device_blocked=0 timeout=0
[0:1:0:0] disk HP LOGICAL VOLUME 5.70 /dev/sda 
state=running queue_depth=1013 scsi_level=6 type=0 device_blocked=0 timeout=30
[root@localhost ~]# 
[root@localhost ~]# cat aa cc dd
[0:0:0:0] storage HP P410i 5.70 - 
state=running queue_depth=1024 scsi_level=6 type=12 device_blocked=0 timeout=0
[0:1:0:0] disk HP LOGICAL VOLUME 5.70 /dev/sda 
state=running queue_depth=1013 scsi_level=6 type=0 device_blocked=0 timeout=30
[0:0:0:0] storage HP P410i 5.70 - 
state=running queue_depth=1024 scsi_level=6 type=12 device_blocked=0 timeout=0
[0:1:0:0] disk HP LOGICAL VOLUME 5.70 /dev/sda 
state=running queue_depth=1013 scsi_level=6 type=0 device_blocked=0 timeout=30
[0:0:0:0] storage HP P410i 5.70 - 
state=running queue_depth=1024 scsi_level=6 type=12 device_blocked=0 timeout=0
[0:1:0:0] disk HP LOGICAL VOLUME 5.70 /dev/sda 
state=running queue_depth=1013 scsi_level=6 type=0 device_blocked=0 timeout=30

2、用tee生成一个文件,包含你敲入的内容#

代码如下:

$tee testfile

这样,会提示要你用标准输入输入内容,然后敲回车会将你输入的内容写入testfile和输出到标准输出,如果用[Ctrl]d结束输入([Ctrl]c也行)。如果原来testfile有内容,将会覆盖。

3、把内容追加到文件的末尾行#

代码如下:

$tee -a testfile

结果类似上,不过如果原来testfile有内容则不会覆盖而是追加。

4、生成一个文件,敲入的时候,不接受中断信号#

代码如下:

$tee -i testfile

结果同testfile,不过不会接收中断信号,只能用[Ctrl]d结束,而不能用[Ctrl]c了。

5、tee命令和sudo一起使用#

假设只可以用一个sudo用户,希望写入root用户拥有权限的文件。任何提升操作都需要在命令之前调用sudo用户。要实现这一点,只需在tee命令前面加上sudo,如下所示:

[guo@localhost ~]$ echo "10.200.50.20 db-01" | sudo tee -a /etc/hosts/

6、在vim编辑器中使用tee#

假设你是一个非root用户,你正在修改root用户拥有的文件,忘记使用sudo权限打开文件,现在你想保存更改,示例如下:

[guo@localhost ~]$ vim /etc/hosts
现在要将更改保存到vim编辑器中的/etc/hosts文件,请运行:

:w !sudo tee %

面提示输入用户的密码,输入完成之后即可保存成功。

总结:

tee命令是一个命令行工具,它从标准输入读取数据,同时将结果打印到文件中和标准输出到屏幕中。

推荐阅读