tee 命令详解
更新时间:2026-08-28。本文是「一个命令一个文档」系列,属于文本处理命令族(见文本处理命令族)。管道里既想看输出、又想存文件,就靠它。
tee 像个三通:把收到的输入同时写到标准输出(屏幕)和一个或多个文件。名字来自水管 T 形接头(tee)。
一、基本用法
bash
ls -l | tee out.txt # 屏幕显示,同时存进 out.txt(覆盖)
command | tee -a log.txt # -a 追加而非覆盖经典场景:一条长命令的结果你想既在终端看到、又存下来日后分析,
tee一步到位。-a追加,避免覆盖上次结果。
二、配合 sudo 写受保护文件
bash
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf # 提权写
# 注意:不能 sudo echo ... > /etc/resolv.conf(重定向在 sudo 前发生,无权限)这是
tee的高频实战:重定向>发生在当前 shell(无 root 权限),所以sudo echo x > /etc/file会失败;改用echo x | sudo tee /etc/file,tee 在 sudo 环境里执行写操作,成功。要追加就用sudo tee -a。
三、管道中间截流
bash
cat data.txt | tee mid.txt | grep "error" | tee err.txt
tee可以插在管道中间"取样":上面既把原始数据存mid.txt,又把过滤后的 error 行存err.txt,终端还能看到最终结果。调试复杂管道时,用它把中间结果落盘,逐段核对。
四、忽略中断
bash
long_cmd | tee -i out.txt # -i 忽略 SIGINT,Ctrl-C 时不中断写文件
-i(ignore interrupts)让 tee 在收到Ctrl-C时仍把已读数据写完,长任务截流更稳妥。
相关命令
一句话总结
tee = 三通分流:输入同时写屏幕+文件;-a 追加;核心实战是绕过 sudo 重定向陷阱——echo x | sudo tee /etc/file 代替失败的 sudo echo x > file;还能插管道中间截流中间结果;-i 忽略中断保写盘。