界面打印和重定向同时实现

在 Shell 中,若要让程序运行时既在界面打印输出内容,又将其重定向到文件,可使用**tee**命令达成此目的。tee命令的作用是从标准输入读取数据,然后将这些数据同时输出到标准输出(也就是屏幕)和指定的文件中。

基本语法

复制代码
command | tee [选项] 文件名
  • command:代表你要运行的程序或命令。
  • |:是管道符号,它的功能是把前一个命令的输出作为后一个命令的输入。
  • tee:该命令会把接收到的输入同时输出到屏幕和指定文件。
  • [选项]:tee命令有一些可选参数,例如-a,其作用是追加内容到文件而非覆盖文件原有内容。
  • 文件名:指定输出内容要被保存到的文件名称。

示例

示例 1:将ls命令的输出同时显示在屏幕并保存到文件
复制代码
ls | tee files_list.txt

此命令会把当前目录下的文件和文件夹列表显示在屏幕上,同时将这些信息保存到files_list.txt文件里。

示例 2:运行一个脚本并把输出同时显示和保存,同时使用追加模式

假设你有一个名为test.sh的脚本,你可以用以下命令来运行它,并把输出同时显示在屏幕和保存到output.log文件,若文件已存在,会追加内容而不是覆盖:

复制代码
./test.sh | tee -a output.log

处理标准错误输出

如果你想要同时处理标准输出和标准错误输出,可以先把标准错误输出重定向到标准输出,再使用tee命令。例如:

复制代码
your_command 2>&1 | tee output.log

这里的your_command是你实际要运行的命令,2>&1的作用是把标准错误输出重定向到标准输出,这样标准输出和标准错误输出都会被tee命令捕获,然后同时显示在屏幕和保存到output.log文件中

相关推荐
叼烟扛炮9 小时前
Linux 学习笔记(四十一):TCP 并发演进——从单进程到多线程服务器
linux·运维·服务器·网络·笔记·学习·tcp/ip
ynchyong9 小时前
Linux 有两个 “版本“
linux·发行版·内核版本
叼烟扛炮9 小时前
Linux 学习笔记(四十四):HTTP 协议解析与极简 Web 服务器实战
linux·服务器·学习
叼烟扛炮9 小时前
Linux 学习笔记(四十三):网络编程进阶——自定义协议解决 TCP 粘包与守护进程
linux·开发语言·网络·笔记·tcp/ip
Escalating_xu9 小时前
【Linux 网络编程】DNS 与 ICMP:从域名解析到 ping、traceroute,把“网络通不通”问清楚
linux·网络·php
一枕槐安48711 小时前
大模型限流、重试、超时处理:API 调用健壮性方案
linux·服务器·php·大模型api·指数退避·限流控制·超时预算
西索斯coding11 小时前
gpt-image-2.5-sunburst 和 gemini-3.1-flash-image 差多少?60 组项目素材的成功成本评测框架
java·linux·gpt·ai
箓维11 小时前
应用层协议基础_序列化与反序列化
linux
wuminyu12 小时前
Java字节码学习总结:字节码如何加载、解析和执行
java·linux·c语言·jvm·c++
十年磨一剑~13 小时前
Linux 内核中断处理机制与软硬件协同流程
linux·嵌入式硬件