Linux Tee命令示例

・4 分钟阅读

tee命令读取标准输入并同时写入标准输出和一个或多个文件,tee主要用于通过管道与其他命令组合使用。

在本教程中,我们介绍使用tee命令的基本知识。

tee命令语法

tee命令的语法如下所示:


tee [OPTIONS] [FILE]

  • OPTIONS
  • -a ( --append ) - 不要覆盖文件,而是追加到给定的文件
  • -i ( --ignore-interrupts ) - 忽略中断信号
  • 使用tee --help查看所有可用选项
  • FILE_NAMES - 一个或多个文件,将输出数据写入其中的每一个

如何使用tee命令

tee命令的最基本用法是显示程序的标准输出( stdout )并将它写入文件。

在下面的示例中,使用df命令获取有关文件系统上可用磁盘空间量的信息,输出通过管道传递给tee命令,这个命令将输出显示到终端并将相同的信息写入文件disk_usage.txt

df -h | tee disk_usage.txt

Filesystem Size Used Avail Use% Mounted on
dev 7.8G 0 7.8G 0% /dev
run 7.9G 1.8M 7.9G 1% /run
/dev/nvme0n1p3 212G 159G 43G 79% /
tmpfs 7.9G 357M 7.5G 5% /dev/shm
tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup
tmpfs 7.9G 15M 7.9G 1% /tmp
/dev/nvme0n1p1 511M 107M 405M 21% /boot
/dev/sda1 459G 165G 271G 38% /data
tmpfs 1.6G 16K 1.6G 1% /run/user/120

您可以使用cat命令查看disk_usage.txt文件的内容。

写入多个文件

tee命令还可以写入多个文件,为此,指定以空格分隔的文件列表作为参数:

command | tee file1.out file2.out file3.out

追加到文件

默认情况下,tee命令将覆盖指定的文件,使用-a ( --append )选项将输出附加到文件:

command | tee -a file.out

忽略中断

要忽略中断,请使用#-i ( -ignore-interrupts) option. This is useful when stopping the command during execution with CTRL+C 优雅退出。

command | tee -i file.out

隐藏输出

如果不希望tee写入标准输出,可以将它重定向到/dev/null

command | tee file.out >/dev/null

将tee与sudo一起使用

假设你希望将root拥有的文件作为sudo用户写入,以下命令将失败,因为sudo不执行输出的重定向,重定向作为非权限用户执行。

sudo echo"newline" > /etc/file.conf

输出将类似于以下内容:


bash: /etc/file.conf: Permission denied

只需在sudo之前添加tee命令,如下所示:

echo"newline" | sudo tee -a /etc/file.conf

tee将接收echo命令的输出,提升到sudo权限并写入文件。

使用teesudo可以写入其他用户拥有的文件。

结束语

tee命令从标准输入读取并将其写入标准输出和一个或多个文件。

如果你有问题或反馈,请留下评论。

讨论
Syq2803 profile image