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 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步