花开|

南哈哈

园龄:3年10个月粉丝:2关注:0

linux tee命令详解

Linux tee

   tee - 从标准输入读入并写往标准输出和文件

   把标准输入的数据复制到文件列表中的每一个文件,同时送往标准输出。

 

用法:tee [选项]... [文件列表]...

 -a, --append 追加到给出的文件,而不是覆盖
 -i, --ignore-interrupts 忽略中断信号
 -p  对写入非管道的行为排查错误 [ -p 选项的默认模式是“warn-nopipe”。]
--output-error[=模式] 设置写入出错时的行为。见下面“模式”部分
--help 显示此帮助信息并退出
--version 显示版本信息并退出

 模式确定向输出写入出错时的行为:

'warn' 对向任何文件输出出错的情况进行诊断
'warn-nopipe' 对向除了管道以外的任何文件输出出错的情况进行诊断
'exit' 一旦输出出错,则退出程序
'exit-nopipe' 一旦输出出错且非管道,则退出程序
当 --output-error 没有给出时,默认的操作是在向管道写入出错时立刻退出,且在向非管道写入出错时对问题进行诊断。  

示例

 1. 在输出到控制台的时候,将内容保存到uptime.log

[root@nan ~]# uptime |tee uptime.log
11:44:09 up 14 min, 1 user, load average: 0.01, 0.06, 0.09
[root@nan ~]# cat uptime.log
11:44:09 up 14 min, 1 user, load average: 0.01, 0.06, 0.09

 2. 往已有文件追加内容,这个时候我们可以使用-a参数来实现:

[root@nan ~]# who | tee -a uptime.log
root pts/0 2022-05-27 11:31 (192.168.128.1)
[root@nan ~]# cat uptime.log
11:44:09 up 14 min, 1 user, load average: 0.01, 0.06, 0.09
root pts/0 2022-05-27 11:31 (192.168.128.1)

 3. 内容输出到多个文件,我们直接在tee命令后面直接添加对应的文件:

[root@nan ~]# who | tee w.log h.log
root pts/0 2022-05-27 11:31 (192.168.128.1)
[root@nan ~]# cat w.log
root pts/0 2022-05-27 11:31 (192.168.128.1)
[root@nan ~]# cat h.log
root pts/0 2022-05-27 11:31 (192.168.128.1)

 4. 重复多次标准输入内容,使用tee - - -

[root@nan ~]# echo “----------welcome back---------” | tee - -
“----------welcome back---------”
“----------welcome back---------”
“----------welcome back---------”

 5. 静默输出到文件,通过将输出重定向到/dev/null 达到静默效果

[root@nan ~]# hostname|tee hostname.list >/dev/null
[root@nan ~]# cat hostname.list
nan

 6. 将错误信息也输出到文件中

tee命令默认将标准输入的普通信息输出到文件,错误信息丢弃,通过如下方式可以实现将错误信息也同步输入到文件
[root@nan ~]# ls "no" | tee no.log
ls: 无法访问no: 没有那个文件或目录
[root@nan ~]# cat no.log 空文件
[root@nan ~]# ls "no" 2>&1 |tee no2.log
ls: 无法访问no: 没有那个文件或目录
[root@nan ~]# cat no2.log
ls: 无法访问no: 没有那个文件或目录

 7. 直接通过键盘往文件输入,使用^d 命令结束输入

[root@nan ~]# tee 1.txt > /dev/null
hello
world
[root@nan ~]# cat 1.txt
hello
world

 8.   忽略中断信号 “-i” 参数使用示例

正常情况下使用 ^c 会结束输入,当时有 -i 参数时中断操作指令 ^c 无效,只可以使用 ^d 结束输入。
[root@nan ~]# tee -i 1.txt > /dev/null
hello
^C //^c 无效
world
[root@nan ~]# cat 1.txt
hello
world

 

本文作者:南哈哈

本文链接:https://www.cnblogs.com/nanruosen/p/16317025.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   南哈哈  阅读(1975)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起