写点什么

linux 双向重定向之 tee 命令

作者:入门小站
  • 2021 年 11 月 27 日
  • 本文字数:820 字

    阅读完需:约 3 分钟

tee 的作用是将一份标准输入多重定向,一份重定向到标准输出/dev/stdout,然后还将标准输入重定向到每个文件 FILE 中。


在执行 Linux 命令时,我们可以把输出重定向到文件中,比如 ls >rumenz.txt,这时不能看到输出了,如果我们既想把输出保存到文件中,又想在屏幕上看到输出内容,就可以使用 tee 命令了.


tee 流程示意图


命令语法

> tee [options] FILE1 FILE2 FILE3...
复制代码

保存当前目录文件列表到文件并打印到屏幕

> ls -al | tee rumenz.txttotal 1088drwxr-xr-x 3 root  root       93 Jun 20 22:57 .drwxr-xr-x 9 root  root     4096 Jul  5 23:09 ..-rw-r--r-- 1 mysql mysql       0 Jun 20 22:57 1.txt-rw-r--r-- 1 mysql mysql       0 Jun 20 22:57 2.txtdrwxr-xr-x 3 root  root       17 Jun  8 23:29 rumenz
复制代码


rumenz.txt里面也有相同的内容

tee 命令追加信息到文件中

默认是覆盖写入,-a是追加写入到目标文件


> ls -al | tee -a rumenz.txt
复制代码

tee 写入多个文件

> ls -al | tee rumenz.txt rumenz1.txt rumenz2.txt 
复制代码

让 tee 命令的输出内容直接作为另一个命令的输入内容

tee 命令,你不仅可以将输出内容写入文件,还可以把输出内容作为另一个命令的输入内容。比如说,下面的命令不仅会将文件名存入 rumenz.txt 文件中,还会通过 wc 命令让你知道输入到 rumenz.txt中的文件数目


> ls file* | tee rumenz.txt | wc -l
复制代码

tee 命令提升文件写入权限

很多时候我们使用非 root 账号修改了一个文件,正要保存的时候,vim 抛出以下错误,直接退出的话,就会丢失掉修改


"/etc/nginx/nginx.conf" E212: Can't open file for writing
复制代码


这个时候我们就可以用 tee 来提升权限保存文件


:w !sudo tee %
复制代码


root 密码,然后就能让你保存修改了

总结

tee 命令读取标准输入,把这些内容同时输出到标准输出和(多个)文件中,tee 命令可以重定向标准输出到多个文件。要注意的是:在使用管道线时,前一个命令的标准错误输出不会被 tee 读取。


原文链接:https://rumenz.com/rumenbiji/linux-tee.html

微信公众号:入门小站

发布于: 2021 年 11 月 27 日阅读数: 7
用户头像

入门小站

关注

还未添加个人签名 2020.01.18 加入

还未添加个人简介

评论

发布
暂无评论
linux双向重定向之tee命令