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
-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 命令以管道中的 T 分隔器命名,该分隔器将分成两个方向,形状像大写的 T。
tee 将数据从标准输入复制到每个 FILE,也复制到标准输出。 实际上,tee 复制其输入,一次将其路由到多个输出。
tee [OPTION]... [FILE]...
#长选项与短选项等价 -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'没有在选项中时,默认的操作是当写入到管道报错时立刻退出,诊断错误信息并写入到非管道输出。
FILE(可选):要输出的文件,可以为一或多个。
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
该命令是 GNU coreutils 包中的命令,相关的帮助信息请查看 man -s 1 tee 或 info coreutils 'tee invocation'。
存在缓存机制,每 1024 个字节将输出一次。若从管道接收输入数据,应该是缓冲区满,才将数据转存到指定的文件中。若文件内容不到 1024 个字节,则接收从标准输入设备读入的数据后,将刷新一次缓冲区,并转存数据到指定文件。