tee - 同时输出到屏幕和文件
tee 从标准输入读取数据,将内容写到标准输出,并同时写入一个或多个文件。它适合在观察命令输出的同时保存日志。
常用参数
-a、--append:追加到文件,而不是覆盖文件。-i、--ignore-interrupts:忽略中断信号。-p:在管道中的某个输出提前关闭时,继续处理其他输出。
使用示例
# 显示并写入文件;已有内容会被覆盖
printf '%s\n' 'hello' | tee output.txt
# 追加内容
printf '%s\n' 'next line' | tee -a output.txt
# 同时写入多个文件
printf '%s\n' 'hello' | tee file-1.txt file-2.txt
# 合并标准输出和标准错误后保存
some_command 2>&1 | tee run.log需要保留原文件时使用 -a。不加 -a 会覆盖文件,因此执行前应确认目标路径。
管道的退出状态
默认情况下,Shell 通常返回管道中最后一个命令的状态。若要让上游命令失败时整个管道也返回失败,可在 Bash 中启用:
set -o pipefail
some_command 2>&1 | tee run.log