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

news2024/10/1 13:44:08

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 exit

If 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.coloradmin.cn/o/2182451.html

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

相关文章

攻防世界---->crazy

做题笔记&#xff1a; 草&#xff0c;不要怀疑自己。 下载 查壳。 64ida打开。 先运行一下程序&#xff1a; 先解决第一个问题 ——是不是输入的长度为32。 tips&#xff1a;这题加载了混淆函数等 ida 反正我跳不过去&#xff0c;pwndbg我用的不是很熟悉。 不过没关系 直接跑…

数据库基础03

文章目录 一、DCL语句1.1 管理用户1.2 权限控制 二、函数2.1 字符串函数2.2 数值函数2.3 日期函数3.4 流程函数 三、约束3.1 概述3.2 约束演示3.3 外键约束3.3.1 外键的基本语法3.3.2 删除/更新行为 一、DCL语句 DCL英文全称是Data Control Language(数据控制语言)&#xff0c;…

Wooey:将 Python 脚本转化为 Web 应用的简易解决方案

Wooey 是一个开源的 Python 项目&#xff0c;旨在帮助开发者快速将 Python 脚本转化为用户友好的 Web 应用程序。通过 Wooey&#xff0c;开发者无需编写复杂的前端代码即可轻松为 Python 脚本创建基于网页的图形用户界面&#xff08;GUI&#xff09;。这使得 Wooey 成为处理数据…

小阿轩yx-案例:项目发布基础

小阿轩yx-案例&#xff1a;项目发布基础 前言 随着软件开发需求及复杂度的不断提高&#xff0c;团队开发成员之间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。Jenkins 自动化部署可以解决集成、测试、部署等重复性的工作&#xff0c;工具集…

【Python报错已解决】 Running setup.py install for wxPython did not run successfully.

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 专栏介绍 在软件开发和日常使用中&#xff0c;BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

Linux防火墙配置绿色端口,解决无法访问java服务的问题

配置防火墙&#xff0c;添加或删除端口&#xff0c;需要有root权限。 防火墙常用命令如下&#xff1a; 1.查看防火墙状态&#xff1a; systemctl status firewalldactive(running)&#xff1a;开启状态&#xff0c;正在运行中 inactive(dead)&#xff1a;关闭状态&#xff0…

js事件循环机制(event loop) 同步任务 异步任务 宏任务 微任务 任务队列与调用栈

1 js事件循环机制简单介绍 JavaScript 是单线程的&#xff0c;处理耗时任务时会阻塞程序执行。为解决这一问题&#xff0c;引入了异步任务机制。同步任务由 JavaScript 引擎直接处理&#xff0c;而异步任务则由宿主环境&#xff08;如 Node.js、浏览器等多线程环境&#xff09;…

Leetcode 每日一题:Crack The Safe

写在前面&#xff1a; 学期真的忙起来了&#xff0c;我的两个社团也在上一周终于完成了大部分招新活动。虽然后面有即将到来的期中考试和求职&#xff0c;但希望能有时间将帖子的频率提上去吧&#xff08;真的尽量因为从做题思考到写博客讲解思路需要大量的时间&#xff0c;在…

矩阵系统源码搭建的具体步骤,支持oem,源码搭建

一、前期准备 明确需求 确定矩阵系统的具体用途&#xff0c;例如是用于社交媒体管理、电商营销还是其他领域。梳理所需的功能模块&#xff0c;如多账号管理、内容发布、数据分析等。 技术选型 选择适合的编程语言&#xff0c;如 Python、Java、Node.js 等。确定数据库类型&…

盘点2024年远程控制黑科技,4款好用到飞起,你get了吗?

随着数字化的浪潮&#xff0c;远程办公变得越来越流行。虽然有些人担心不在办公室工作&#xff0c;效率会降低&#xff0c;但实际上并不是这样。技术一直在进步&#xff0c;现在有很多好用的远程控制软件&#xff0c;它们不仅打破了地点的限制&#xff0c;还让在家工作也能井井…

Spring Boot实现足球青训俱乐部管理自动化

4 系统设计 4.1 系统架构设计 B/S系统架构是本系统开发采用的结构模式&#xff0c;使用B/S模式开发程序以及程序后期维护层面需要的经济成本是很低的&#xff0c;用户能够承担得起。使用这样的模式开发&#xff0c;用户使用起来舒心愉悦&#xff0c;不会觉得别扭&#xff0c;操…

Spring Boot技术在足球青训管理中的创新应用

3 系统分析 3.1 可行性分析 可行性分析是该平台系统进行投入开发的基础第一步&#xff0c;必须对其进行可行性分析才能够降低不必要的需要从而使资源合理利用&#xff0c;更具有性价比和降低成本&#xff0c;同时也是系统平台的成功的未雨绸缪的一步。 3.1.1 技术可行性 技术可…

Redis篇(缓存机制 - 多级缓存)(持续更新迭代)

目录 一、传统缓存的问题 二、JVM进程缓存 1. 导入案例 2. 初识Caffeine 3. 实现JVM进程缓存 3.1. 需求 3.2. 实现 三、Lua语法入门 1. 初识Lua 2. HelloWorld 3. 变量和循环 3.1. Lua的数据类型 3.2. 声明变量 3.3. 循环 4. 条件控制、函数 4.1. 函数 4.2. 条…

足球青训后台管理系统:Spring Boot实现指南

2 相关技术简介 2.1 Java技术 Java是一门伟大的纯面向对象的编程语言和编程语言。同时&#xff0c;它还是Java语言从嵌入式开发到企业级开发的平台。Java凭借其一次编译&#xff0c;任何地方执行的优点&#xff0c;使得盛行的web应用程序有大量的Java编译&#xff0c;很好地支…

生信初学者教程(十九):免疫浸润细胞

文章目录 介绍加载R包导入数据所需函数运行ImmuCellAI其他免疫浸润方法输出结果总结介绍 免疫浸润分析在癌症研究中扮演着至关重要的角色,它有助于理解癌症微环境中免疫细胞的组成及其作用。bulk转录组基因表达数据的反卷积技术,如CIBERSORT算法,是实现这一分析的重要工具。…

云原生数据库 PolarDB

简介&#xff1a;云原生数据库 PolarDB 是阿里云自研产品&#xff0c;在存储计算分离架构下&#xff0c;利用了软硬件结合的优势&#xff0c;为用户提供秒级弹性、高性能、海量存储、安全可靠的数据库服务。100%兼容MySQL和PostgreSQL生态&#xff0c;支持分布式扩展&#xff0…

Spring整合Mybatis Plus

Mybatis Plus是原始Mybatis的增强&#xff0c;框架内部自动实现了Mapper的CRUD操作&#xff0c;极大的提高了编程效率。对单表操作基本无需编写Mapper.xml文件内容&#xff0c;对复杂的多表关联查询时&#xff0c;需要额外在Mapper.xml编写对应的sql语句。 Spring整合Mybatis P…

《如何高效学习》

有道云笔记 第一部分 整体性学习策略 结构 结构就像思想中的一座城市&#xff0c;有很多建筑物&#xff0c;建筑物之间有道路相连&#xff0c;有高大而重要的与其他建筑有上百条路相连&#xff0c;无关紧要的建筑只有少数泥泞的小道与外界相通。 建立良好的知识结构就是绘制…

仿真设计|基于51单片机的土壤温湿度监测及自动浇花系统仿真

目录 具体实现功能 设计介绍 51单片机简介 资料内容 仿真实现&#xff08;protues8.7&#xff09; 程序&#xff08;Keil5&#xff09; 全部内容 资料获取 具体实现功能 &#xff08;1&#xff09;DS18B20实时检测环境温度&#xff0c;LCD1602实时显示土壤温湿度&…

【C++】vector详解:接口使用、迭代器、内存理解、与模拟实现

文章目录 1. 前言2. 内存角度 理解3. vector的使用定义 | 构造函数vector iteratorvector 空间增长问题vector 增删查改vector 迭代器失效避免迭代器失效的建议 4. 如何理解 二维动态vector5. 模拟实现 vector6. 相关文档 1. 前言 vector 是 C 标准模板库&#xff08;STL&…