你想要输出的信息也同时能写入文件。这个时候,tee
命令就有其用武之地了。
NAME
tee - read from standard input and write to standard output and files
SYNOPSIS
tee [OPTION]... [FILE]...
DESCRIPTION
Copy standard input to each FILE, and also to standard output.
tee:
-a, --append
append to the given FILEs, do not overwrite
-i, --ignore-interrupts
ignore interrupt signals
--help display this help and exit
--version
output version information and exit
If a FILE is -, copy again to standard output.
GNU coreutils online help: <http://www.gnu.org/software/coreutils/> Report tee translation bugs to <http://translationproject.org/team/>
AUTHOR
Written by Mike Parker, Richard M. Stallman, and David MacKenzie.
COPYRIGHT
Copyright ? 2013 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.
SEE ALSO
The full documentation for tee is maintained as a Texinfo manual. If the info and tee programs are properly installed at your site, the command
info coreutils ‘tee invocation‘
Linux tee命令用于读取标准输入的数据,并将其内容输出成文件。
在执行Linux命令时,我们可以把输出重定向到文件中,比如 ls >a.txt,
这时我们就不能看到输出了,如果我们既想把输出保存到文件中,又想在屏幕上看到输出内容,就可以使用tee命令了。
tee命令读取标准输入,把这些内容同时输出到标准输出和(多个)文件中,tee命令可以重定向标准输出到多个文件。要注意的是:在使用管道线时,前一个命令的标准错误输出不会被tee读取。
tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。
语法
tee [-ai][--help][--version][文件...]
参数:
- -a或--append 附加到既有文件的后面,而非覆盖它.
- -i或--ignore-interrupts 忽略中断信号。
- --help 在线帮助。
- --version 显示版本信息。
tee
最基本的用法就是显示输出结果并且保存内容到文件中。下面例子使用free
命令显示系统内存使用信息,并使用tee
命令将信息输出到屏幕,并保存到文件mem.txt中。
[root@localhost ~]# free -h | tee mem.txt total used free shared buff/cache available Mem: 1.8G 164M 1.2G 9.6M 387M 1.5G Swap: 2.0G 0B 2.0G
可以查看一下mem.txt文件,可以看到输出内容已经保存到mem.txt里面了。
tee
可以写入多个文件,每个文件之间使用空格分隔。
[root@localhost ~]# free -h | tee mem1.txt mem2.txt mem3.txt total used free shared buff/cache available Mem: 1.8G 165M 1.2G 9.6M 389M 1.5G Swap: 2.0G 0B 2.0G
下面的例子使用选项-a
在文件底部追加内容,不覆盖原有内容。
[root@localhost ~]# free -h | tee -a mem.txt total used free shared buff/cache available Mem: 1.8G 165M 1.2G 9.6M 389M 1.5G Swap: 2.0G 0B 2.0G
可以看到,在mem.txt文件底部追加了新的内容。
如果不想在屏幕输出内容,可以使用>
标准输出符号,重定向到/dev/null
中:
[root@localhost ~]# free -h | tee -a mem.txt > /dev/null
如何让 tee 命令的输出内容直接作为另一个命令的输入内容?
使用 tee
命令,你不仅可以将输出内容写入文件,还可以把输出内容作为另一个命令的输入内容。比如说,下面的命令不仅会将文件名存入 output.txt
文件中,还会通过 wc
命令让你知道输入到 output.txt
中的文件数目。
ls file* | tee output.txt | wc -l