行业资讯

时间:2025-08-13 浏览量:(5)

Linux 中的 tee 命令:用法与实例

tee 命令在 Linux 中用于读取标准输入,并将结果同时写入标准输出和一个或多个文件。它的核心功能是在终端显示命令输出的同时,将输出重定向到文件,例如用户可利用 tee 命令向 root 用户拥有的文件中添加新行。

一、tee 命令基本语法

[command] | tee [options] [filename]

二、tee 命令的基本用法

1. 显示输出并保存到单个文件

tee 命令最常用的场景是显示命令的标准输出,同时将输出保存到文件中。例如,执行hostnamectl命令打印系统主机名及详细信息,并将标准输出存储为host_info.txt:
$ hostnamectl | tee host_info.txt
执行后终端会显示如下内容:
Static hostname: ywnzIcon name: computer-laptopChassis: laptopMachine ID: 7a138ee71db94e8785d1a4dbe54dde7eBoot ID: 34d27941b74941a9a29bc424f66613bcOperating System: openSUSE Leap 15.2CPE OS Name: cpe:/o:opensuse:leap:15.2Kernel: Linux 5.3.18-lp152.75-defaultArchitecture: x86-64
可通过cat命令查看文件host_info.txt的内容:
$ cat host_info.txt

2. 同时写入多个文件

若要将输出写入多个文件,只需添加由空格分隔的文件列表作为参数:
$ command | tee file1 file2…fileN

3. 追加内容(不覆盖原有内容)

默认情况下,每次运行 tee 命令会覆盖目标文件的内容。若需以追加方式写入内容,需使用-a(或--append)选项:
$ command | tee -a file

4. 忽略中断信号

若想让 tee 命令在执行过程中遇到中断时正常退出,可使用-i(或--ignore-interrupts)选项:
$ command | tee -i file

5. 隐藏终端输出

若只需将输出写入文件,不需要在终端显示,可将标准输出重定向到/dev/null:
$ command | tee file >/dev/null

三、处理权限问题:写入 root 或其他用户拥有的文件

当尝试向 root 用户或其他用户拥有的文件写入内容时,直接使用重定向可能会因权限不足报错。例如,向/etc/sudoers文件添加新行时,直接使用sudo和重定向会失败:
$ sudo echo "add a newline" > /etc/sudoersbash: /etc/sudoers: Permission denied
此时可借助 tee 命令,通过sudo提升权限实现写入:
$ echo "add a newline" | sudo tee -a /etc/sudoers

四、在 shell 脚本中使用 tee

在 shell 脚本中,tee 命令可用于实时记录日志并在终端显示。例如,创建一个脚本/tmp/testbash.sh
$ vi /tmp/testbash.sh
脚本内容如下:
#!/bin/bashLOGFILE=/tmp/test-logs-$(date +%d%m%Y)echo "Append the logs routinely" | tee -a $LOGFILE
上述脚本会将日志内容同时输出到终端,并追加到以当前日期命名的日志文件中。

Search Bar

最新资讯

2025-08-12

美国服务器选择指南:动态 IP...

2025-08-04

凌华智能推出全新 AI 边缘服...

2025-08-12

跨境电商服务器流量管理:关键维...

2025-08-13

香港多 IP 站群服务器选择双...

2025-08-22

网页显示 “404/403”?...