「tee(1)」-

从标准输入中读取数据,然后写入标准输出和文件

如果你想将输出内容记录下来,同时又想输出到屏幕,就可以使用tee命令。

命令行语法格式

tee [OPTION]… [FILE]…

命令支持的选项及含义

-a, –append
将内容追加到FILE中。默认情况下,会覆盖FILE中的内容。

-i, –ignore-interrupts
忽略中断信号。

-p, –output-error[=MODE]
设置在发生写错误(write error)的时候的行为。长选项–output-error的MODE支持如下值:

  • warn:当打开或者输出发生错误时,发出警告,包括管道的错误。继续向打开的文件/管道写入。如果输出有任何错误,退出状态都为失败。
  • warn-nopipe:当打开或者输出时发生错误,发出警告,但是管道除外。继续向打开的文件/管道写入,不退出。如果发生了错误,退出状态都为失败。这个是默认值;使用简写格式的-p也表示MODE为warn-nopipe。
  • exit:打开或者输出发生错误的时候,退出。
  • exit-nopipe:打开或者输出发生错误的时候,退出。但是管道除外。

其中,–output-error在未指定MODE的情况下,当写入管道发生错误时,会立即退出,并且诊断写入非管道输出的错误。

–help
显示帮助信息并退出。

–version
显示版本信息并退出。

使用示例

有时候你下载了一个文件,下载完成后我们会计算文件的校验和,我们通常这么做:

# wget https://example.com/some.iso && sha1sum some.iso

但是有了tee命令之后,我们可以这么做:

# wget -O – https://example.com/dvd.iso | tee >(sha1sum > dvd.sha1) > dvd.iso

上面的命令使用了“进程替换(>(command))”,需要SHELL支持该功能。如果SHELL不支持进程替换,可以使用下面的命令:

# wget -O – https://example.com/dvd.iso | tee dvd.iso | sha1sum > dvd.sha1

有关进程替换的内容可以参考在线手册

参考文献

更新日志

  • 04/18/2017 创建文章
  • 06/08/2018 修改文章内容和结构