linux tee命令
嘻嘻发布于2020-10-05
最后更新于2020年8月20日
浏览tee命令读取标准输入并将其写入标准输出和一个或多个文件。该命令以管道中使用的T分隔器命名。它基本上破坏了程序的输出,因此它既可以显示又可以保存在文件中
该tee
命令从标准输入读取并同时写入标准输出和一个或多个文件。tee
通常通过管道与其他命令结合使用。
tee
命令语法
该tee
命令的语法如下:
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
您可以disk_usage.txt
使用cat命令查看文件的内容。
写入多个文件
该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 and want
tee正常退出。
command | tee -i file.out
隐藏输出
如果您不想tee
写入标准输出,则可以将其重定向到/dev/null
:
command | tee file.out >/dev/null
与sudo结合使用tee
假设您想以sudo用户身份写入root拥有的文件。以下命令将失败,因为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权限并写入文件。
使用tee
会同sudo
让你写由其他用户所拥有的文件。
结论
该tee
命令从标准输入读取并将其写入标准输出和一个或多个文件。