← 全部文章

技术与生活 / 一篇记录

想看执行进度,也想保留输出

直接把输出重定向到文件后,终端可能长时间没有反馈。tee 位于数据通道中间,把相同内容复制到两个去处,适合保存构建摘要或实验结果。

先明确这里的区别

tee 把标准输入复制到终端和文件,适合观察正在执行的任务。

以下示例面向常见 GNU/Linux 环境,文件名为实验用占位名称。

printf 'build finished\n' | tee demo-build.log

怎样判断处理正确

确认终端输出与文件内容相同。

检查终端和文件是否同时出现同一条消息。错误输出默认不一定进入管道;需要一并保存时,应先弄清两个输出流的合并顺序。

如果管道前面的命令失败、tee 却成功写出了部分输出,管道整体状态可能令人误判。需要严格识别前段失败的 Bash 脚本,可结合 pipefail,并在受控样本里验证最终退出码。

需要留意的是,tee 默认覆盖文件;需要追加时明确使用 -a。

参考:Linux 文档。

搜索文章

输入关键词,找回一篇记录。