tee命令可实现终端输出实时显示并同步保存至文件,支持覆盖写入、追加模式、多文件分发、sudo权限适配及配合script进行会话级捕获。
如果您在 Mac 终端中执行命令,希望结果既实时显示在屏幕上,又同步保存到文件中,则可利用tee 命令实现双向输出。以下是多种可行的操作方法:
一、基础用法:将命令输出同时显示并覆盖写入单个文件
tee 命令通过管道接收前序命令的标准输出,并将其复制一份输出至屏幕,另一份写入指定文件。默认行为为覆盖目标文件内容。
1、打开“终端”应用程序,可通过聚焦搜索“终端”后点击启动。
2、输入形如
ls -l | tee output.txt的命令,其中 ls -l 为示例命令,output.txt 为待创建或覆盖的文件名。
3、回车执行后,目录列表将即时显示在终端界面,同时完整内容被写入当前目录下的 output.txt 文件中。
二、追加模式:保留原文件内容,新增输出追加至末尾
当需持续记录日志或累积多次命令结果时,应避免覆盖已有数据,而采用追加方式写入文件。
1、在 tee 命令后添加-a参数启用追加功能。
2、执行
date | tee -a log.txt,当前日期时间将被添加到 log.txt 文件末尾。
3、再次运行相同命令,新时间戳会继续追加,不会清除此前记录。
三、多目标输出:一次命令结果同时写入多个文件并显示在屏幕
tee 支持向多个文件路径并行写入相同输出流,适用于需要分发日志副本或做多路备份的场景。
1、在 tee 后依次列出多个文件路径,中间以空格分隔。
通义灵码 Mac版通义灵码 Mac版是阿里云推出的一款AI智能编码助手,深度集成于Xcode、VS Code及JetBrains等主流IDE中。它基于大模型技术,支持行级/函数级实时续写、自然语言生成代码、单元测试生成及智能问答等核心功能。macOS用户可通过插件市场直接安装,开箱即用,旨在辅助开发者高效完成编码任务,提升研发效率。
下载
2、运行
ps aux | grep sshd | tee sshd_status.log sshd_temp.txt,进程筛选结果将同时出现在屏幕、sshd_status.log 和 sshd_temp.txt 中。
3、确保各目标路径具有写权限;若任一路径不可写,tee 仍会将输出送达其余有效路径及屏幕。
四、配合 sudo 执行高权限命令并保存输出
当原始命令需 root 权限(如读取系统日志、访问受保护设备)时,必须正确配置 sudo 位置,否则因权限不足导致输出中断或写入失败。
1、将 sudo 置于原始命令前,例如sudo dmesg | tee kernel_log.txt,确保内核消息能被完整读取并传递给 tee。
2、也可将 sudo 施加于 tee 本身,写作dmesg | sudo tee kernel_log.txt,此时写入动作获得权限,但命令执行仍受限于当前用户环境。
3、避免使用
sudo dmesg | sudo tee kernel_log.txt这类冗余写法,无实际增益且可能引发权限混淆。
五、结合 script 命令实现会话级全量捕获
tee 仅捕获单一命令输出,若需记录整个终端会话(含多条命令、提示符、交互输入与错误信息),应改用 script 工具。
1、在终端中输入
script session_log.txt,系统将提示“Script started”,随后所有键入与输出均被记录。
2、正常执行任意命令,例如
pwd、whoami、ls /private/var/log等。
3、输入
exit结束录制,提示“Script done”,session_log.txt 即包含完整会话文本,含时间戳与控制字符。
