Linux命令——tee

Posted kelamoyujuzhen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux命令——tee相关的知识,希望对你有一定的参考价值。

转自:Linux tee Command Explained for Beginners (6 Examples)

8 Linux Tee Command with Examples

国内已有人翻译此文:为初学者介绍的 Linux tee 命令(6 个例子)

相关:Bash基础——pipe

Linux命令——xargs

简介

有时候,你会想手动跟踪命令的输出内容,同时又想将输出的内容写入文件,确保之后可以用来参考。如果你想寻找这相关的工具,那么恭喜你,Linux 已经有了一个叫做 tee 的命令可以帮助你。tee命令读入标准输入,并写到标准输出和文件(一个或多个)。tee命令以管道中使用的T分配器(T-splitter)命名。 它基本上打破了程序的输出,因此它既可以显示也可以保存在文件中。 它同时执行两个任务,将结果复制到指定的文件或变量中,并显示结果。见下图

stdout其实也就是屏幕了

语法

tee [OPTION]... [FILE]...

选项

  • -a:附加到既有文件的后面,而非覆盖它.
  • -i:忽略中断信号(即不被Ctrl+C打断)。
  • --help 在线帮助。
  • --version 显示版本信息。

典型用法

如何在 Linux 上使用这个命令

假设因为某些原因,你正在使用 ping 命令。

然后同时,你想要输出的信息也同时能写入文件。这个时候,tee 命令就有其用武之地了。

ping google.com | tee output.txt

可见,tee命令输出内容不仅被写入 output.txt 文件,也被显示在标准输出中。

如何确保 tee 命令追加信息到文件中?

默认情况下,在同一个文件下再次使用 tee 命令会覆盖之前的信息。如果你想的话,可以通过 -a 命令选项改变默认设置。

[command] | tee -a [file]

如何让 tee 写入多个文件?

非常简单,只需要多写明几个文件名就行了。

[command] | tee [file1] [file2] [file3]

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

下面的命令不仅会将文件名存入 output.txt 文件中,还会通过 wc 命令让你知道输入到 output.txt 中的文件数目。

如何查看日志文件并写入文件

我们可以通过tee命令分析通过apache2服务器的HTTP2流量。实时日志可以传输到标准输出,也可以写入文件以供日后进一步分析。

sudo tail -f /var/log/apache2/access.log | grep --line-buffered "HTTP/2.0" | tee -a http2.log
View Code

如何使用 tee 命令提升文件写入权限?

假如你使用 Vim 编辑器 打开文件,并且做了很多更改,然后当你尝试保存修改时,你得到一个报错,让你意识到那是一个 root用户所拥有的文件,这意味着你需要使用 sudo 权限保存修改。

如此情况下,你可以(在 Vim 内)使用 tee 命令来提高权限。

:w !sudo tee %

上述命令会向你索要 root 密码,然后就能让你保存修改了。

普通用户怎么创建root用户的文件?

 sudo echo \'Documents\' | sudo tee -a folder_of_root.txt
View Code

上述命令会向你索要 root 密码,然后数据就写到了folder_of_root.txt。

如何让 tee 命令忽视中断?

-i 命令行选项使 tee 命令忽视通常由 ctrl+c 组合键发起的中断信号(SIGINT)。

 

以上是关于Linux命令——tee的主要内容,如果未能解决你的问题,请参考以下文章

Linux tee命令作用是啥?

linux 的tee命令

Linux命令——tee

Linux命令使用:tee

Linux命令使用:tee

linux 的tee命令