tee命令

2023-05-18 14:19:51 浏览数 (2)

简介

将标准输入复制到每个文件中,也复制到标准输出。

详解

帮助文档

代码语言:javascript复制
# tee --help  
Usage: tee [OPTION]... [FILE]...
Copy standard input to each FILE, and also to standard output.

  -a, --append              append to the given FILEs, do not overwrite
  -i, --ignore-interrupts   ignore interrupt signals
  -p                        diagnose errors writing to non pipes
      --output-error[=MODE]   set behavior on write error.  See MODE below
      --help     display this help and exit
      --version  output version information and exit

MODE determines behavior with write errors on the outputs:
  'warn'         diagnose errors writing to any output
  'warn-nopipe'  diagnose errors writing to any output not a pipe
  'exit'         exit on error writing to any output
  'exit-nopipe'  exit on error writing to any output not a pipe
The default MODE for the -p option is 'warn-nopipe'.
The default operation when --output-error is not specified, is to
exit immediately on error writing to a pipe, and diagnose errors
writing to non pipe outputs.

GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
Full documentation <https://www.gnu.org/software/coreutils/tee>
or available locally via: info '(coreutils) tee invocation'

Bash

参数详解

-a, --append

追加到给出的文件,而不是覆盖

-i, --ignore-interrupts

忽略中断信号

-p

对写入非管道的行为排查错误 [ -p 选项的默认模式是“warn-nopipe”。]

--output-error[=模式]

设置写入出错时的行为。见下面“模式”部分

--help

显示此帮助信息并退出

--version

显示版本信息并退出

模式详解

warn'

对向任何文件输出出错的情况进行诊断

'warn-nopipe'

对向除了管道以外的任何文件输出出错的情况进行诊断

'exit'

一旦输出出错,则退出程序

'exit-nopipe'

一旦输出出错且非管道,则退出程序

默认

当 --output-error 没有给出时,默认的操作是在向管道写入出错时立刻退出,且在向非管道写入出错时对问题进行诊断。

实例

代码语言:javascript复制
┌──(root㉿kali)-[~/Desktop]
└─# tee test.txt         
this is a example.           #这行是控制台自己键盘输入的
this is a example.           #这行是tee输出到控制台的
^C                           #ctrl c 退出tee命令
                                                                                                                          
┌──(root㉿kali)-[~/Desktop]
└─# cat test.txt             #输出test.txt文件
this is a example.
                                                                                                                          
┌──(root㉿kali)-[~/Desktop]
└─# tee test.txt tt.txt      #同时向test.txt、tt.txt两个文件写入
this is a other example.     #这行是控制台自己键盘输入的
this is a other example.     #这行是tee输出到控制台的
^C                           #ctrl c 退出tee命令
                                                                                                                          
┌──(root㉿kali)-[~/Desktop]
└─# cat test.txt             #输出test.txt文件,可见覆盖了原内容
this is a other example.
                                                                                                                          
┌──(root㉿kali)-[~/Desktop]
└─# cat tt.txt               #输出tt.txt文件
this is a other example.    
                                                                                                                          
┌──(root㉿kali)-[~/Desktop]
└─# tee -a test.txt          # -a 参数,追加内容
this is a example.           #这行是控制台自己键盘输入的
this is a example.           #这行是tee输出到控制台的
^C                           #ctrl c 退出tee命令
                                                                                                                          
┌──(root㉿kali)-[~/Desktop]
└─# cat test.txt             #输出test.txt文件,可见没有覆盖原内容,追加到下一行
this is a other example.
this is a example.
                                                                                                                          
┌──(root㉿kali)-[~/Desktop]
└─# echo `date` | tee -a test.txt      #利用管道符将日期追加到test.txt,同时输出到控制台     
Fri Oct 7 11:21:09 PM EDT 2022
                                                                                                                          
┌──(root㉿kali)-[~/Desktop]
└─# cat test.txt         #输出test.txt文件             
this is a other example.
this is a example.
Fri Oct 7 11:21:09 PM EDT 2022

Bash

结束语

tee命令是在学习过程中遇到的,感觉有意思且实用,故记录一下。

0 人点赞