Linux shell编程学习笔记84:tee命令——显示保存两不误

0 引言

在前面的学习笔记中,我们经常使用echo命令和输出重定向来生成脚本文件或演示文件,其实Linux提供了一个可以从标准输入读取数据,并输出成文件的命令——tee。

1 tee命令 的帮助信息、功能、命令格式、选项和参数说明

1.1 tee命令 的帮助信息

我们可以输入命令 tee --help 来查看tee命令的帮助信息。

[purpleendurer @ bash ~] 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--help     display this help and exit--version  output version information and exitIf 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/>
For complete documentation, run: info coreutils 'tee invocation'
[purpleendurer @ bash ~] 

1.2 tee命令 的功能

tee 是一个简单的命令行实用程序,它接受输入并将输出写入文件和标准输出(即终端)。

tee命令和输出重定向都可以把输出内容保存到文件,但两者仍然存在差别:

输出重定向只能保存到1个文件,

tee允许我们把标准想要将输出重定向到多个文件。

Tee 命令是 GNU coreutils 的一部分,因此它预装在所有 Linux 发行版中。

1.3 tee命令 命令格式

tee [选项]... [文件]...

1.4 tee命令 选项说明

选项说明
-a, --append附加到给定的 FILE,不覆盖
-i, --ignore-interrupts忽略中断信号
--help显示此帮助并退出
--version输出版本信息并退出

1.5 tee命令 参数说明 

文件:将标准输入保存到的文件名

2 tee命令使用实例

2.1 将标准输入内容保存到多个文件

例如,将标准输入内容"I am purpleendurer"保存到文件 t1 和 t2的命令是:

tee t1 t2

[purpleendurer @ bash ~] tee t1 t2
I am purpleendurer
I am purpleendurer
[purpleendurer @ bash ~] ls
Code  t1  t2
[purpleendurer @ bash ~] cat t1
I am purpleendurer
[purpleendurer @ bash ~] cat t2
I am purpleendurer
[purpleendurer @ bash ~] 

我们通过标准输入设备键盘输入 I am purpleendurer 回车并按Ctr+D保存

tee命令默认将标准输入的内容输出到标准输出设备,所以我们会看到两行 I am purpleendurer

随后我们使用ls命令查看当看目录,发现了新创建的文件t1和t2

接着我们使用cat命令查看文件t1和t2的内容,两个文件的内容都是我们刚才输入的  I am purpleendurer

2.2 将标准输入内容追加保存到多个文件,并且不将输入内容显示在标准输出设备上

我们仍然以文件t1和t2为例。

[purpleendurer @ bash ~] cat t1 t2
I am purplendurer
I am purplendurer
[purpleendurer @ bash ~] tee -a t1 t2  > /dev/null
Linux is good.
[purpleendurer @ bash ~] cat t1
I am purplendurer
Linux is good.
[purpleendurer @ bash ~] cat t2
I am purplendurer
Linux is good.
[purpleendurer @ bash ~] 

2.2.1 首先,我们使用cat命令查看文件t1和t2的内容,两个文件的内容都是:

 I am purpleendurer

2.2.2 然后,我们使用命令带-a选项的tee命令

tee -a t1 t2  > /dev/null

将标准输入内容追加到文件t1 和 t2,并使用了

> /dev/null

将标准输出重定向到 /dev/null,这样tee命令就不会把输入的内容输出到标准输出设备上。

2.2.3 接着,我们输入:Linux is good 回车并按Ctrl+D保存。

2.2.4 最后,我们使用cat命令查看文件t1和t2的内容,两个文件的内容都是:

 I am purpleendurer

Linux is good.

2.3 与echo命令和管道操作配合使用

[purpleendurer @ bash ~] echo Hello world | tee t3 t4
Hello world
[purpleendurer @ bash ~] cat t3 t4
Hello world
Hello world
[purpleendurer @ bash ~] 

我们使用echo命令输出字符串Hello world,字符串Hello world经过管道输入到tee 命令,被tee 命令存入文件t3和t4。

使用cat命令查看文件t1和t2的内容,两个文件的内容都是字符串Hello world

所以命令

 echo Hello world | tee t3 t4

相当于两条命令

 echo Hello world > t3

 echo Hello world >  t4

通过管道操作,tee命令不会回显输入的字符串Hello world

2.4 将出错信息保存到文件

[purpleendurer @ bash ~] ifconfig | tee i
bash: ifconfig: command not found
[purpleendurer @ bash ~] cat i
[purpleendurer @ bash ~] ifconfig 2>&1 | tee i
bash: ifconfig: command not found
[purpleendurer @ bash ~] cat i
bash: ifconfig: command not found
[purpleendurer @ bash ~] 

管道操作一般转发标准输出信息(1),不转发命令执行时反馈的出错信息(2)。

如果我们想将命令执行时反馈的出错信息也存储下来,可以使用l输出重定向

2>&1

将出错信息重定向到标准输出。其中1代表标准畀出,2代表出错信息。

在上面的例子里,命令

ifconfig

没有标准出错,只有出错信息:

bash: ifconfig: command not found

 所以命令

ifconfig | tee i

中 没有信息通过管道输入给命令tee,也就没有信息存储到文件i

所以我们使用cat命令查看文件i是没有内容的。

当我们在ifconfig命令后面增加了 2>&1,命令变成

ifconfig 2>&1 | tee i

ifconfig命令的出错信息被重定向到标准输入,通过管道传输给tee命令并保存到文件1中。

这里我们使用cat命令查看文件i的内容,就是:

bash: ifconfig: command not found

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/55137.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件测试学习笔记丨Pytest 学习指南

本文转自测试人社区&#xff0c;原文链接&#xff1a;https://ceshiren.com/t/topic/32336 基本介绍 pytest框架是一个成熟&#xff0c;全面的测试框架&#xff0c;具有非常丰富的第三方插件&#xff0c;并且可以自定义扩展 比如&#xff1a;pytest-selenium , pytest-html ,…

MySQL高阶2004-职员招聘人数

目录 题目 准备数据 分析数据 实现 题目 一家公司想雇佣新员工。公司的工资预算是 70000 美元。公司的招聘标准是&#xff1a; 雇佣最多的高级员工。在雇佣最多的高级员工后&#xff0c;使用剩余预算雇佣最多的初级员工。 编写一个SQL查询&#xff0c;查找根据上述标准雇…

net core mvc 数据绑定 《1》

其它的绑定 跟net mvc 一样 》》MVC core 、framework 一样 1 模型绑定数组类型 2 模型绑定集合类型 3 模型绑定复杂的集合类型 4 模型绑定源 》》》》 模型绑定 使用输入数据的原生请求集合是可以工作的【request[],Querystring,request.from[]】&#xff0c; 但是从可读…

unity一键注释日志和反注释日志

开发背景&#xff1a;游戏中日志也是很大的开销&#xff0c;虽然有些日志不打印但是毕竟有字符串的开销&#xff0c;甚至有字符串拼接的开销&#xff0c;有些还有装箱和拆箱的开销&#xff0c;比如Debug.Log(1) 这种 因此需要注释掉&#xff0c;当然还需要提供反注释的功能&am…

前端 vue3 对接科大讯飞的语音在线合成API

主要的功能就是将文本转为语音&#xff0c;可以播放。 看了看官方提供的demo&#xff0c;嗯....没看懂。最后还是去网上找的。 网上提供的案例&#xff0c;很多都是有局限性的&#xff0c;我找的那个他只能读取第一段数据&#xff0c;剩下的不读取。 科大讯飞的接口&#xf…

监控告警功能详细介绍及操作演示:运维团队的智能保障

在当今这个信息化高速发展的时代&#xff0c;运维团队面临着前所未有的挑战。为了确保系统的稳定性和高效运维&#xff0c;监控告警功能成为了运维团队不可或缺的得力助手。本文将详细介绍我们的监控告警功能&#xff0c;并结合实际操作页面进行演示&#xff0c;帮助运维团队更…

25中国烟草校园招聘面试问题总结 烟草面试全流程及面试攻略

开头附上工作招聘面试必备问题噢~~包括综合面试题、无领导小组面试题资源文件免费&#xff01;全文干货。 工作招聘无领导小组面试全攻略最常见面试题&#xff08;第一部分&#xff09;共有17章可用于国企私企合资企业工作招聘面试面试必备心得面试总结资源-CSDN文库https://d…

springboot整合seata

一、准备 docker部署seata-server 1.5.2参考&#xff1a;docker安装各个组件的命令 二、springboot集成seata 2.1 引入依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-seata</artifactId>&…

【架构】NewSQL

文章目录 NewSQLTiDBTiDB 主要组件特点使用场景安装与部署 推荐阅读 NewSQL NewSQL是一种数据库管理系统(DBMS)的类别&#xff0c;它结合了NoSQL数据库的可扩展性和传统SQL数据库的事务一致性。具体来说&#xff0c;NewSQL数据库旨在解决传统关系型数据库在处理大规模并发事务…

C# C++ 笔记

第一阶段知识总结 lunix系统操作 1、基础命令 &#xff08;1&#xff09;cd cd /[目录名] 打开指定文件目录 cd .. 返回上一级目录 cd - 返回并显示上一次目录 cd ~ 切换到当前用户的家目录 &#xff08;2&#xff09;pwd pwd 查看当前所在目录路径 pwd -L 打印当前物理…

[大语言模型-论文精读] 利用多样性进行大型语言模型预训练中重要数据的选择

[大语言模型-论文精读] 利用多样性进行大型语言模型预训练中重要数据的选择 论文信息&#xff1a; Harnessing Diversity for Important Data Selection in Pretraining Large Language Models Authors: Chi Zhang, Huaping Zhong, Kuan Zhang, Chengliang Chai, Rui Wang, X…

linux下sudo执行的程序会有一个额外的进程的问题

当我们执行一个可执行文件时&#xff0c;有可能需要一些更高的权限&#xff0c;为此我们会用sudo ./test的方法执行&#xff0c;这时候我们通过ps aux | grep ./test去查看进程&#xff0c;会发现多出来一个 sudo ./test 的进程&#xff0c;该进程被杀死后&#xff0c;发现目标…

【新闻转载】Storm-0501:勒索软件攻击扩展到混合云环境

icrosoft发出警告&#xff0c;勒索软件团伙Storm-0501近期调整了攻击策略&#xff0c;目前正将目标瞄准混合云环境&#xff0c;旨在全面破坏受害者的资产。 该威胁行为者自2021年首次露面&#xff0c;起初作为Sabbath勒索软件行动的分支。随后&#xff0c;他们开始分发来自Hive…

Linux中find命令详解

记录linux中find命令的详细用法。 文章目录 find命令简介基本语法常用选项-name-iname-type-size-mtime,-atime,-ctime-perm-user-group-delete-exec-printand or find --help find命令简介 find 是一个搜索目录树以查找一个文件或一组文件的程序。它遍历目录树并报告与用户规…

MySQL | excel数据输出insert语句

需求 在日常生产运维过程中&#xff0c;有很多需要进行人工梳理的excel数据&#xff0c;到了研发这一侧需要转为sql语句进行数据修正&#xff0c;如何输出insert插入语句&#xff1f; 方案 在空白列插入&#xff0c;选择需要的列 "INSERT INTO tab_name1 (name, desc) …

慢病中医药膳养生食疗管理微信小程序、基于微信小程序的慢病中医药膳养生食疗管理系统设计与实现、中医药膳养生食疗管理微信小程序的开发与应用(源码+文档+定制)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

Ubuntu环境下字体安装

本文介绍Ubuntu环境下字体安装。 软件&#xff08;如Qt应用软件&#xff09;开发过程中经常会涉及到字体的选择&#xff0c;有时候Ubuntu环境下并没有我们想要的字体&#xff0c;本文介绍常用字体及在Ubuntu环境下如何安装。 1.常用开源字体 有些字体商用并不是免费的&#…

支持语音方式问答,支持使用重排模型进行多路召回,MaxKB知识库问答系统v1.6版本发布

2024年9月29日&#xff0c;MaxKB开源知识库问答系统正式发布v1.6版本。 在v1.6社区版中&#xff0c;应用方面&#xff0c;MaxKB新增支持语音方式问答&#xff0c;支持使用重排模型进行多路召回&#xff0c;支持自定义全局变量&#xff0c;支持OpenAI Compatible API调用格式&a…

Mac通过ssh连接工具远程登录服务器( Royal TSX安装及使用)

一、Royal TSX软件下载地址 Royal Apps 二、Royal TSX 汉化 汉化包地址&#xff1a;GitCode - 全球开发者的开源社区,开源代码托管平台 三、基础配置 Royal TSX 是一款基于插件的应用&#xff0c;刚安装时还不具备使用条件&#xff0c;需要进行一些基础配置 1 安装基础插件…

k8s StorageClass 存储类

文章目录 一、概述1、StorageClass 对象定义2、StorageClass YAML 示例 二、StorageClass 字段1、provisioner&#xff08;存储制备器&#xff09;1.1、内置制备器1.2、第三方制备器 2、reclaimPolicy&#xff08;回收策略&#xff09;3、allowVolumeExpansion&#xff08;允许…