linux-command 仓库详解 Linux tee 命令:标准输出与文件双写实战指南
发布时间:2026/10/3 8:26:34 作者:尧图编辑部 阅读量:1,286

文档教程【免费下载链接】linux-commandLinux命令大全搜索工具内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux项目地址https://gitcode.com/GitHub_Trending/linux/linux-command点击查看免费下载tee是 GNU coreutils 中一个极其实用的管道命令它从标准输入读取数据并同时把数据重定向到标准输出通常是终端和指定的一个或多个文件非常适合边查看边落盘的场景。本文以 command/tee.md 为主体系统讲解 tee 的语法、全部选项、--output-error错误处理模式、返回值与缓冲刷新机制并给出可直接运行的示例同时结合 linux-command 仓库的索引与构建机制说明这条命令在 Linux 命令速查手册中的组织与检索方式。tee 命令能做什么在 Linux 管道中数据流通常是单向的命令A | 命令B会把 A 的输出直接交给 B而中间结果无处保存。tee就像管道上的一个三通其名字正源于英文的 T 形管件它从标准输入读取数据把同样的内容同时写到两个目的地标准输出让数据继续流向终端或下游管道文件按指定的 FILE 参数落盘供后续查看或记录。从仓库的索引数据 dist/data.json 可以看到tee 在速查手册中的描述为从标准输入读取数据并重定向到标准输出和文件这正是其最核心的功能定义。常见使用场景是需要同时查看命令输出内容又要把内容保存到文件时。命令语法与参数tee [OPTION]... [FILE]...OPTION可选行为选项详见下一节选项详解。FILE可选要输出的文件可以指定一个或多个。未指定 FILE 时tee 仅把输入复制到标准输出。多个 FILE 参数意味着同一份数据会被同时写入所有指定文件这在需要同时维护多份日志副本时非常有用。选项详解tee 的长选项与短选项等价完整选项如下表所示选项说明-a, --append追加到文件中而不是覆盖原有内容。-i, --ignore-interrupts忽略中断信号即 CtrlC 中断操作无效。-p诊断写入非管道即普通文件等的错误。--output-error[MODE]设置写错误发生时的行为MODE 取值见下方说明。--help显示帮助信息并退出。--version显示版本信息并退出。MODE写错误时的输出行为--output-error选项通过MODE决定当出现写错误时 tee 如何处理可用取值如下MODE行为warn当写入到任何输出包括管道报错时输出诊断信息。warn-nopipe当写入到任何输出但不是管道报错时输出诊断信息。exit当写入到任何输出报错时立即退出。exit-nopipe当写入到任何输出但不是管道报错时立即退出。默认行为遵循以下规则-p选项指定的默认 MODE 为warn-nopipe当--output-error没有出现在命令行中时默认操作是当写入到管道报错时立刻退出并诊断错误信息写入到非管道输出。简单理解默认情况下 tee 对下游管道破裂非常敏感例如下游命令提前退出导致 SIGPIPE会立即终止而-p则把注意力放在文件这类非管道输出上即使管道出问题也只给出诊断而不轻易退出。这在管道下游命令可能提前结束的脚本中尤其值得注意。返回值tee 的返回状态为成功除非给出了非法选项或非法参数。因此也可以把 tee 的退出码用于脚本判断只要命令调用合法就可以认为数据已按预期分流。实战示例覆盖写入多个文件# 将进程信息通过管道输出到标准输出终端并覆盖写入到文件中。 ps -ef | tee info_a.log info_b.log执行后ps -ef的完整输出会同时显示在终端并被写入info_a.log与info_b.log两个文件若文件已存在则被覆盖。追加写入多个文件# 将进程信息通过管道输出到标准输出终端并追加写入到文件中。 ps -ef | tee -a info_a.log info_b.log加-a--append后输出会被追加到文件末尾而不是覆盖适合持续累积日志的场景。常见扩展用法在需要 root 权限才能写入的配置场景中借助sudo与 tee 的组合是通用做法——例如把内容写入/etc下的配置文件# 将 echo 输出同时显示在终端并写入系统级配置文件 echo options | sudo tee /etc/modprobe.d/example.conf在记录日志的同时继续过滤查看也是管道中的常用组合# 全量输出落盘同时终端只显示含关键字的行 ./app.sh 21 | tee full.log | grep -i error上述两个例子属于 tee 在标准 Shell 工作流中的通用用法可结合自己的实际场景按需组合。注意缓存与刷新机制使用 tee 时有两个需要了解的行为细节命令归属tee 是GNU coreutils包中的命令相关的帮助信息请查看man -s 1 tee或info coreutils tee invocation。存在缓存机制tee 每1024 个字节将输出一次。若从管道接收输入数据应该是缓冲区满才将数据转存到指定的文件中若文件内容不到 1024 个字节则接收从标准输入设备读入的数据后将刷新一次缓冲区并转存数据到指定文件。这意味着如果上游命令长时间没有产生足够多的数据不足 1024 字节文件里的内容可能不会立即更新到最新状态而当输入结束或缓冲区被刷新时数据才会完整落盘。在编写需要实时监控文件输出的脚本时应把这个缓冲行为考虑进去。tee 在 linux-command 仓库中的组织与检索tee 作为 Linux 文件管理类命令被收录在 linux-command 命令速查手册中仓库内部围绕它做了如下组织命令手册源文件command/tee.md 是 tee 的唯一事实来源包含本篇文章的全部内容索引数据构建时由 scripts/build.mjs 解析command/目录下所有.md文件提取命令名n、路径p与描述d生成 dist/data.json其中 tee 的索引条目为tee: { n: tee, p: /tee, d: 从标准输入读取数据并重定向到标准输出和文件。 }分类归属README 的Linux命令分类中tee 与cat、grep、diff、find、mv等一同归入文件管理类别方便按类检索页面渲染template/details.ejs 负责把command/tee.md渲染为独立的 HTML 详情页并在页面顶部提供纠正错误添加实例入口构建脚本还会把文档内部的.md相对链接改写为.html保证静态站点内跳转可用。如果你需要把这份手册集成到自己项目里仓库还提供了 npm 包方式npm install linux-command后即可通过require(linux-command/command/tee.md)拿到 Markdown 原文或通过索引文件按命令名定位。小结tee 是连接查看与落盘的桥梁型命令核心要点可归纳为默认覆盖写入、-a追加、-i忽略中断、-p与--output-error精细控制写错误行为以及 1024 字节缓冲刷新机制。把它与ps、grep、sudo等命令组合即可在日志采集、配置写入、调试输出等场景中做到一鱼两吃。更全面的中文说明可直接查阅仓库内的 command/tee.md。赞分享文档教程【免费下载链接】linux-commandLinux命令大全搜索工具内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux项目地址https://gitcode.com/GitHub_Trending/linux/linux-command点击查看免费下载相关推荐linux-command 仓库 cp 命令详解Linux 文件复制的完整实战指南linux command 仓库 cp 命令详解Linux 文件复制的完整实战指南 本指南以 linux command 仓库中的 command/cp.md文档教程Linux traceroute 命令详解Linux Command 仓库中的路由追踪实战指南Linux traceroute 命令详解Linux Command 仓库中的路由追踪实战指南 traceroute 是 Linux 网络排障中定位数据包走文档教程Linux printf 命令详解bash 内建与 GNU coreutils 双版本格式化输出实战指南linux-command 项目Linux printf 命令详解bash 内建与 GNU coreutils 双版本格式化输出实战指南linux command 项目 printf 是文档教程上一篇G-Helper轻量化华硕笔记本性能控制工具全面解析下一篇Awesome Copilot 中的 Expert Vue.js Frontend Engineer AgentVue 3 前端工程实践指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考