Linux的Tee命令及示例

评论 0 浏览 0 2019-01-13

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)选项。当用CTRL+C在执行过程中停止命令,并希望tee能优雅地退出时,这很有用。

command | tee -i file.out

隐藏输出内容

如果你不想让tee写到标准输出,你可以把它重定向到/dev/null

command | tee file.out >/dev/null

将tee与sudo结合起来使用

假设你想写一个由sudo用户root拥有的文件。下面的命令会失败,因为输出的重定向不是由sudo执行的。重定向是作为非特权用户执行的。

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

输出结果将看起来像这样。

输出

bash: /etc/file.conf: Permission denied

只需在tee命令前预留sudo,如下图所示。

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

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

teesudo结合起来使用,可以让你写到其他用户拥有的文件。

总结

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

如果你有任何问题或反馈意见,请随时留言。

最后更新2023-06-02
0 个评论
标签