1. 命令概述
- 命令名称:
tee - 核心功能:从标准输入读取数据,同时输出到标准输出和文件
- 主要用途:管道数据分流、命令输出保存、实时监控
2. 语法格式
tee [选项] [文件...]
3. 常用选项
| 选项 | 说明 |
|---|---|
-a | 追加到文件,不覆盖 |
-i | 忽略中断信号 |
-p | 诊断写入错误 |
--help | 显示帮助信息 |
--version | 显示版本信息 |
4. 常用实例详解
(1) 基本用法
# 将命令输出同时显示在屏幕和保存到文件
ls -la | tee output.txt
# 输出到多个文件
ls -la | tee file1.txt file2.txt
# 追加到文件
ls -la | tee -a log.txt
(2) 结合管道使用
# 查看进程并保存到文件
ps aux | tee processes.txt | grep nginx
# 统计文件行数并保存
wc -l access.log | tee count.txt
# 查看日志并保存
tail -f /var/log/syslog | tee syslog_copy.log
(3) 多文件输出
# 输出到多个文件
echo "Hello World" | tee file1.txt file2.txt file3.txt
# 输出到文件并显示
cat data.txt | tee backup.txt | less
(4) 实时监控
# 实时监控日志并保存
tail -f /var/log/nginx/access.log | tee access.log.backup
# 监控命令执行并保存
ping google.com | tee ping.log
5. 实际应用场景
场景一:命令输出保存
# 查看系统信息并保存
uname -a | tee system_info.txt
# 查看磁盘使用情况并保存
df -h | tee disk_usage.txt
# 查看内存使用情况并保存
free -h | tee memory_usage.txt
场景二:日志记录
# 记录脚本执行过程
./script.sh | tee script.log
# 记录安装过程
sudo apt-get install nginx | tee install.log
# 记录编译过程
make | tee build.log
场景三:调试排错
# 调试脚本并记录输出
bash -x script.sh | tee debug.log
# 查看网络连接并记录
netstat -tulpn | tee network.log
# 查看系统日志并记录
journalctl -xe | tee journal.log
场景四:数据备份
# 备份重要文件并验证
tar -czf backup.tar.gz /data/ | tee backup.log
# 数据库备份并记录
mysqldump -u root -p database | tee backup.sql
# 文件同步并记录
rsync -avz source/ destination/ | tee sync.log
6. 高级用法
(1) 结合其他命令
# 查看大文件并保存
cat largefile.txt | tee copy.txt | head -n 100
# 处理数据并保存中间结果
cat data.csv | grep "error" | tee errors.txt | wc -l
# 多重管道处理
cat log.txt | grep "ERROR" | tee errors.txt | sort | uniq -c
(2) 权限提升
# 使用 sudo 写入需要权限的文件
echo "new content" | sudo tee /etc/config/file
# 追加内容到需要权限的文件
echo "append content" | sudo tee -a /etc/config/file
(3) 错误处理
# 忽略中断信号
ping google.com | tee -i ping.log
# 诊断写入错误
echo "test" | tee -p file.txt
7. 注意事项
- 权限问题:写入需要权限的文件时,需使用
sudo tee - 文件覆盖:默认会覆盖文件,使用
-a选项追加 - 磁盘空间:确保有足够的磁盘空间保存输出
- 性能影响:大文件处理时,
tee会增加 I/O 开销 - 信号处理:使用
-i选项忽略中断信号
8. 常见问题解决
(1) 权限不足
# 使用 sudo 提升权限
echo "content" | sudo tee /root/file.txt
# 追加内容到需要权限的文件
echo "append" | sudo tee -a /root/file.txt
(2) 文件不存在
# tee 会自动创建文件
echo "Hello" | tee newfile.txt
(3) 磁盘空间不足
# 检查磁盘空间
df -h
# 清理空间后重试
rm -f largefile.log
(4) 中断处理
# 使用 -i 选项忽略中断
long_running_command | tee -i output.log
核心要点总结:
tee命令用于将标准输入同时输出到标准输出和文件- 常用选项:
-a(追加)、-i(忽略中断) - 主要用途:命令输出保存、日志记录、调试排错、数据备份
- 权限处理:写入需要权限的文件时使用
sudo tee - 实际应用:脚本执行记录、系统监控、安装过程记录、数据备份验证
- 性能考虑:大文件处理时注意 I/O 开销
tee 命令是管道操作的重要工具,可以方便地保存命令输出,同时不影响后续管道处理。