Linux tee命令基础介绍
Linux tee命令的核心功能是读取标准输入的数据,一方面将数据输出到标准输出(通常是终端),另一方面将数据写入到一个或多个文件中,非常适合需要同时查看输出内容和保存输出结果的场景。

基本语法格式
tee命令的基础语法如下:
tee [选项] 文件名1 [文件名2 ...]
通常tee命令会和管道符配合使用,将前一个命令的输出作为tee的输入,示例如下:
命令1 | tee 文件名
常用参数说明
以下是tee命令的常用参数及其作用:
- -a:追加模式,将输出内容追加到目标文件末尾,而不是覆盖原有内容
- -i:忽略中断信号,即使接收到中断指令也继续完成写入操作
- --help:显示命令的帮助信息
- --version:显示命令的版本信息
tee命令使用场景与示例
场景1:同时输出到终端和文件
如果需要执行某个命令,既要在终端看到输出结果,又要把结果保存到文件里,就可以使用tee命令:
# 执行ls命令,输出同时显示在终端并写入到list.txt文件 ls -l | tee list.txt
执行后可以在终端看到ls -l的输出内容,同时当前目录下会生成list.txt文件,内容和终端输出一致。
场景2:追加内容到文件
如果不想覆盖原有文件的内容,需要追加新的输出内容,就加上-a参数:
# 将当前日期追加到list.txt文件,同时终端显示日期 date | tee -a list.txt
场景3:同时写入多个文件
tee命令支持同时将数据写入多个文件,只需要指定多个文件名即可:
# 将ls输出同时写入file1.txt和file2.txt,终端也显示输出 ls | tee file1.txt file2.txt
场景4:忽略中断信号
当写入大文件时,如果不想被意外的中断信号影响写入过程,可以加上-i参数:
# 忽略中断信号,持续将输出写入文件 long_running_command | tee -i output.log
注意事项
1. 如果不使用-a参数,tee命令会直接覆盖目标文件中原有的内容,使用前需要确认是否需要保留原有数据。
2. 如果指定的文件不存在,tee命令会自动创建该文件;如果文件存在且没有写权限,命令会执行失败并提示权限错误。
3. 在脚本中使用tee命令时,如果需要隐藏终端的标准输出,可以将标准输出重定向到/dev/null,示例如下:
# 只将输出写入文件,不在终端显示 ls | tee list.txt > /dev/null