Linux tee命令示例

tee命令从标准输入读取内容并同时将标准输出写入一个或多个文件。tee最常用于通过管道与其他命令结合使用

2 min read
By myfreax
Linux tee命令示例

tee命令从标准输入读取内容并同时将标准输出写入一个或多个文件。tee最常用于通过管道与其他命令结合使用。

在本教程中,我们将说明如何使用tee命令和常见的选项。这其中包括使用tee写入多个文件,追加到文件,忽略中断,隐藏tee的终端输出,tee与sudo结合使用。

在讨论如何使用tee命令之前,让我们先回顾一下基本语法,这是tee命令的基本语法形式tee [OPTIONS] [FILE]

FILE_NAMES可以是一个或多个文件,OPTIONS是tee的选项,以下是一些常用的选项。

-a/--append表示追加到指定的文件,如果你不想文件的内容被覆盖请使用这个选项。在没有该选项时,tee将会覆盖已存在的文件的内容。

-i/--ignore-interrupts表示 忽略中断信号,也就是说会忽略ctrl+c--help查看所有可用的选项。

tee命令的最基本用法是将另一个命令的标准输出stdout写入到文件。除了写入单个文件之外tee也可以写入多个文件。

如你需要写入到多个文件,只需在tee命令之后指定多个文件名并由空格分隔的文件名。

如果您不想tee写入到标准输出,通常是终端的显示输出,您只需将其重定向到/dev/null

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

#写入到多个文件中
echo "myfreax" | tee file1 file2
#追加内容到文件
command | tee -a file.out
#忽略中断命令
command | tee -i file.out
#隐藏tee的标准输出
command | tee file.out >/dev/null

tee与sudo结合使用

假设你想使用sudo写一个root用户拥有的文件。你可能会运行命令sudo echo "newline" > /etc/file.conf

你将会收到权限拒绝的错误消息bash: /etc/file.conf: Permission denied。之所以会失败是因为sudo不执行输出的重定向,它将作为非root用户写入。

您可以将tee命令与sudo结合,来写入其他用户拥有的文件。只需在tee命令前加前缀sudo,tee将收到echo的标准输出,提升为root权限并写入指定文件。

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

结论

到目前为止,您应该很好地理解如何使用tee命令。如果您有任何问题或反馈。