在 Linux 操作里,文件重定向是咱们最常用的基础技能,> 用于覆盖写入、>> 用于追加内容,二者在文件不存在时都会自动创建,简单又实用。但很多新手不知道,还有一个更灵活的命令能实现多重定向:tee。不同于普通重定向只写入文件,tee 可以一边将内容输出到屏幕,一边同步写入指定文件。哈哈,是不是很实用。有兴趣的小伙伴可以了解下~tee 可以将标准输入的数据同时输出到标准输出和文件中。它常用于将命令的输出结果显示在终端的同时保存到文件中。这个命令的名字好像是来源于水管中的"T"型接头(tee),它象征着数据的分流,有意思。- tee 命令读取标准输入,将数据写到标准输出(通常是终端)并保存到一个或多个文件中。
- 默认情况下,它会将数据覆盖文件中的内容。如果想要将数据追加到文件末尾,需要使用 -a 选项。
这是 tee 命令最常见的用法,能够将一个命令的输出同时显示在终端,并保存到一个文件中。备注:"command"可以是任何命令或者是命令的组合,基本上都能配合tee使用,接下来文章里都用它表示。例如,ls -l 命令列出当前目录中的文件时,使用 tee 可以将结果保存到文件 output.txt 中,同时在终端中显示出来:默认情况下,tee 会覆盖文件的内容。如果想将输出追加到文件末尾,可以使用 -a 选项。command | tee -a filename
例如,要将 ls 命令的输出追加到文件 output.txt 中:ls -l | tee -a output.txt
tee 还可以同时将输出保存到多个文件中,只需列出多个文件名即可。command | tee file1 file2 file3
例如,ls -l 命令的输出同时保存到 file1.txt 和 file2.txt:ls -l | tee file1.txt file2.txt
你可以使用 tee 与其他命令结合,来过滤和保存输出内容。command | tee file | grep "pattern"
例如,想将文件内容通过 grep 查找某个关键词并同时输出到文件:cat myfile.txt | tee output.txt | grep "pattern"
- -i:忽略中断信号,防止命令因中断(Ctrl+C)而中止。
日志记录:在调试或查看日志时,可能需要将某些输出保存在文件中,同时又希望在终端实时查看。tee 可以帮助你实现这一点。例如,你在运行一个脚本时,既希望看到命令输出,又希望将输出保存到日志文件中:./run_ceshi.sh | tee ceshi.log
批量处理:在处理多个文件时,你可能需要同时记录结果并将其显示出来。tee 可以将不同的命令输出分发到多个文件中,简化处理过程。cat file1.txt | tee result1.txtcat file2.txt | tee result2.txt
调试与监控:在长期运行的脚本或服务中,使用 tee 可以将输出实时保存,同时监控进程的输出。tee 和 shell 的重定向(> 和 >>)有所不同,主要体现在:- tee 则可以将输出显示在终端的同时,也保存到文件中。
上面的命令只会将输出保存到 output.txt,不会在终端显示。如果你需要在显示结果的同时保存输出,tee 就非常适合。小编觉得 tee 命令是一个功能强大的工具,能够让咱们同时查看和保存命令的输出,尤其在调试和监控任务时非常有用。它的常见用途包括: