tee 命令详解

| 选择喜欢的代码风格  

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

tee 命令安装:


-bash: tee: command not found

#Debian
apt-get install coreutils

#Ubuntu
apt-get install coreutils

#Alpine
apk add coreutils

#Arch Linux
pacman -S coreutils

#Kali Linux
apt-get install coreutils

#CentOS
yum install coreutils

#Fedora
dnf install coreutils

#OS X
brew install coreutils

#Raspbian
apt-get install coreutils

#Docker
docker run cmd.cat/tee tee

tee 命令补充说明:


tee 命令以管道中的 T 分隔器命名,该分隔器将分成两个方向,形状像大写的 T

tee 将数据从标准输入复制到每个 FILE,也复制到标准输出。 实际上,tee 复制其输入,一次将其路由到多个输出。

tee 命令语法:


tee [OPTION]... [FILE]...

tee 命令选项:


#长选项与短选项等价

-a, --append               追加到文件中而不是覆盖。
-i, --ignore-interrupts    忽略中断信号(Ctrl+c中断操作无效)。
-p                         诊断写入非管道的错误。
--output-error[=MODE]      设置写错误时的行为,请查看下方的MODE部分。
--help                     显示帮助信息并退出。
--version                  显示版本信息并退出。

#MODE决定了当出现写错误时的输出行为,可用的MODE如下:

'warn'           当写入到任何输出报错时诊断。
'warn-nopipe'    当写入到任何输出(而不是管道)报错时诊断。
'exit'           当写入到任何输出报错时退出。
'exit-nopipe'    当写入到任何输出(而不是管道)报错时退出。

-p选项的指定的默认MODE为'warn-nopipe'。

#当'--output-error'没有在选项中时,默认的操作是当写入到管道报错时立刻退出,诊断错误信息并写入到非管道输出。

tee 命令参数:


FILE(可选):要输出的文件,可以为一或多个。

tee 命令实例


ls 命令列出了当前目录中所有文件扩展名为 .txt 的文件,每行一个文件; 此输出通过管道传输到 wc,wc 对行进行计数并输出数字。 此输出通过管道传输到 tee,后者将输出写入终端,并将相同的信息写入文件 count.txt如果 count.txt 已经存在,它将被覆盖

ls -1 *.txt | wc -l | tee count.txt

tee 将标准输入复制到每个FILE,也复制到标准输出:

echo "example" | tee FILE

tee 附加到给定的文件,不要覆盖:

echo "example" | tee -a FILE

tee 将标准输入输出到终端,并将其通过管道传输到另一个程序中以进行进一步处理:

echo "example" | tee /dev/tty | xargs printf "[%s]"

tee 创建一个名为 example 的文件夹,计算 example 中的字符数,然后将 example 写入终端:

echo "example" | tee >(xargs mkdir) >(wc -c)

example
8

tee 命令的坑:


该命令是 GNU coreutils 包中的命令,相关的帮助信息请查看 man -s 1 teeinfo coreutils 'tee invocation'
存在缓存机制,每 1024 个字节将输出一次。若从管道接收输入数据,应该是缓冲区满,才将数据转存到指定的文件中。若文件内容不到 1024 个字节,则接收从标准输入设备读入的数据后,将刷新一次缓冲区,并转存数据到指定文件

tee 命令扩展阅读:




tee 命令评论