当前位置: 首页 > news >正文

Bash 中的 2>1 | tee 命令详解

Bash 中的 2>&1 | tee 命令详解

在 Linux 和 Unix 系统中,命令行提供了强大的输出控制功能,能够灵活地处理标准输入(stdin)、标准输出(stdout)和标准错误(stderr)。本文将详细介绍 2>&1 | tee 语法的用法、功能及应用场景。


1. 基础概念

1.1 标准输入和输出

  1. 标准输入 (stdin) - 文件描述符为 0,通常来自键盘输入。
  2. 标准输出 (stdout) - 文件描述符为 1,通常输出到终端。
  3. 标准错误 (stderr) - 文件描述符为 2,用于输出错误信息,通常也输出到终端。

1.2 重定向符号

  • >:将标准输出重定向到文件。
  • 2>:将标准错误重定向到文件。
  • >>:将输出追加到文件末尾。
  • 2>&1:将标准错误 (2) 重定向到标准输出 (1)。

示例:

command > output.log 2>&1

上述命令表示将标准输出和标准错误都写入 output.log 文件。


2. tee 命令简介

tee 命令用于将输出同时发送到 文件终端

2.1 基本用法

command | tee output.log
  • 管道符号 | 将命令的输出传递给 tee
  • tee 将输出显示到终端,同时保存到 output.log 文件中。

2.2 常用选项

  • -a:追加模式,将内容追加到文件末尾,而不是覆盖。

示例:

command | tee -a output.log

3. 2>&1 | tee 语法解析

3.1 语法结构

command 2>&1 | tee output.log
  1. 2>&1:将标准错误 (2) 重定向到标准输出 (1)。
  2. |:管道符号,将前一个命令的输出传递给下一个命令。
  3. tee output.log:将接收到的输出同时写入文件 output.log 并显示在终端。

3.2 执行顺序分析

{ time my_command; } 2>&1 | tee output.log
  1. 执行 { time my_command; } 命令块。
  2. 捕获标准输出和标准错误 (2>&1)。
  3. 将输出传递给 tee 命令。
  4. tee 将输出内容同时写入 output.log 文件并打印到终端。

4. 应用场景

场景 1:记录时间和输出

{ time python script.py; } 2>&1 | tee log.txt

记录脚本运行时间和所有输出信息,便于分析运行性能。

场景 2:实时监控日志

tail -f /var/log/syslog | tee -a monitor.log

实时查看系统日志,同时将其保存到 monitor.log 文件中。

场景 3:调试复杂命令

command_with_long_output 2>&1 | tee debug.log

将命令执行过程中产生的正常输出和错误信息全部保存到日志文件,同时方便实时查看调试过程。

场景 4:保存和分析大型任务日志

{ time training_script.sh; } 2>&1 | tee training.log

将训练过程及时间信息保存到日志文件,用于分析模型训练过程和性能表现。


5. 注意事项

  1. 输出顺序问题
    在管道中,标准输出和标准错误的输出顺序可能会交错,尤其是在长时间运行的命令中。建议通过 tee 记录完整日志,便于后续分析。
  2. 文件夹提前创建
    如果输出目录不存在,需要提前创建,否则会报错。例如:
    mkdir -p output_dir
    
  3. 追加模式
    使用 -a 参数避免覆盖之前的日志。

6. 总结

2>&1 | tee 是 Bash 中强大的命令组合,适合需要实时监控和记录日志的任务。无论是调试脚本、分析程序输出,还是记录运行时间和错误信息,这种组合都提供了灵活性和可靠性。

推荐实践:

{ time long_running_command; } 2>&1 | tee -a log_file.log

这种方式适合各种需要保存日志的场合,是 Bash 日常开发和调试的重要工具。

后记

2024年12月31日13点08分于上海,在GPT4o大模型辅助下完成。

相关文章:

Bash 中的 2>1 | tee 命令详解

Bash 中的 2>&1 | tee 命令详解 在 Linux 和 Unix 系统中,命令行提供了强大的输出控制功能,能够灵活地处理标准输入(stdin)、标准输出(stdout)和标准错误(stderr)。本文将详…...

MySQL数据库的日志

一、概论 日志(log)是一种记录系统运行时各种状态和事件的文件。 它通常用于系统监控、故障排查、安全审计和性能分析。日志文件可以记录用户操作、系统错误、应用程序行为等信息。日志文件通常包含时间戳、事件类型、事件描述等关键信息,以…...

DataCap 2024.4.1 版本发布:MongoDB 驱动支持、工作流引擎升级

尊敬的 DataCap 用户: DataCap 2024.4.1 版本现已正式发布。本次更新包含多项重要功能升级和性能优化,现将主要更新内容公布如下: 核心功能升级 数据库功能增强 (实现功能) 新增数据库管理功能:支持创建、删除和切换数据库完善表…...

二十三种设计模式-单例模式

单例模式(Singleton):确保一个类只有一个实例,并提供一个全局访问点。 单例模式两种实现方法:懒汉式和饿汉式。 懒汉式(Lazy Initialization) 懒汉式单例模式在第一次被使用时才创建实例&…...

【微服务】SpringBoot 国际化适配方案使用详解

目录 一、前言 二、国际化概述 2.1 微服务中的国际化是什么 2.1.1 国际化概念 2.1.2 为什么需要国际化 2.2 微服务中常用的国际化方法 2.2.1 资源文件分离 2.2.2 使用国际化框架 2.2.3 使用动态模板 2.2.4 使用数据库存储 2.2.5 API设计结合配置中心 三、SpringBoot…...

太阳能电池板缺陷识别数据集,使用yolo,coco json,pasical voc xml格式标注,可识别旁路二极管,电池故障,热点,2234张原始图片

太阳能电池板缺陷识别数据集,使用yolo,coco json,pasical voc xml格式标注,可识别旁路二极管,电池故障,热点,2234张原始图片 以下是该项目的一些用例: 太阳能发电厂监控:该模型可用于自动化检查和识别大型…...

客户案例:基于慧集通平台集成打通小满CRM+金蝶云星空+钉钉

一、引言 本案例原型公司是一家生物科技公司,公司自开创以来专注于体外诊断生物活性原材料的研究、生产、销售和服务,致力于为全球体外诊断试剂生产企业提供领先且具有竞争力的核心原料和相关辅助产品服务。公司以卓越的产品和优质的服务赢得了客户的广…...

ubuntu 如何使用vrf

在Ubuntu或其他Linux系统中,您使用ip命令和sysctl命令配置的网络和内核参数通常是临时的,这意味着在系统重启后这些配置会丢失。为了将这些配置持久化,您需要采取一些额外的步骤。 对于ip命令配置的网络接口和路由,您可以将这些配…...

Debian-linux运维-ssh配置(兼容Jenkins插件的ssh连接公钥类型)

系统版本:Debian 12.5、11.1 1 生成密钥对 可以用云服务商控制台生成的密钥对,也可以自己在客户端或者服务器上生成, 已经有密钥对就可以跳过这步 用户默认密钥文件路径为 ~/.ssh/id_rsa,可以在交互中指定路径,也可…...

K8S详解(5万字详细教程)

目录 ​编辑 一、集群管理命令 二、命名空间 1. 获取命名空间列表 2. 创建命名空间 3. 删除命名空间 4. 查看命名空间详情 三、Pod 1. Pod概述 2. Pod相位状态 3. 管理命令 3.1 获取命名空间下容器(pod)列表 3.2 查看pod的详细信息 3.3 创建 && 运行 3.4 …...

Redis6为什么引入了多线程?

大家好,我是锋哥。今天分享关于【Redis6为什么引入了多线程?】面试题。希望对大家有帮助; Redis6为什么引入了多线程? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Redis 6 引入了多线程的主要目的是提高性能&#…...

KMP 2024 年总结,Kotlin 崛起的一年

2024 Google I/O 上正式官宣了 KMP(Kotlin Multiplatform)项目,它是 Google Workspace 团队的一项长期「投资」项目,由 JetBrains 开发维护和开源的项目,简单来说,JetBrains 主导,Google Worksp…...

leecode188.买卖股票的最佳时机IV

这道题目我在买卖股票III就已经得出规律了&#xff0c;具体可看买卖股票的最佳时机||| class Solution { public:int maxProfit(int k, vector<int>& prices) {int nprices.size();vector<vector<int>> dp(n,vector<int>(2*k1,0));for(int j1;j&l…...

分布式消息队列RocketMQ

一、RocketMQ概述 1.1 MQ 概述 MQ&#xff0c;Message Queue&#xff0c;是一种提供消息队列服务的中间件&#xff0c;也成为消息中间件&#xff0c;是一套提供了消息生产、存储、消费全过程API的软件系统。消息即数据 1.2 MQ 用途 MQ的用途总结起来可分为以下三点 限流削峰…...

诗韵--代码之外的生活:2025 元旦歌

2025 元旦歌 1 说明2 正文3 简评 1 说明 又是一年元旦&#xff0c;在公司抽个空&#xff0c;写首诗纪念一下。 本系列博客&#xff1a;诗韵–代码之外的生活 2 正文 2025 元旦歌 一年又一年&#xff0c; 又到新元旦。 恍若零五年&#xff0c; 已是二五年。 工作忙连连&#x…...

SpringBoot项目启动的时候,指定jvm内存大小的3种方式

1. 通过命令行固定参数 在命令行中运行 Spring Boot 应用程序时&#xff0c;可以使用 -Xms 和 -Xmx 选项指定初始和最大堆内存大小。例如&#xff1a; java -Xms512m -Xmx1024m -jar mySpringBootApp.jar 优点&#xff1a; 简单明了 缺点&#xff1a; 是写死的&#xff0c;…...

学习vue3的笔记

一、vue和react的对比 1、基础介绍 vue&#xff1a;https://cn.vuejs.org/ vue3是2020年创建的 react&#xff1a;https://react.dev/ react是一个2013年开源的JavaScript库&#xff0c;严格意义上来说不是一个框架 2、diff算法 两个框架采用的都是同级对比策略 两节点对…...

MySQL UNION

关于《MySQL UNION》的操作&#xff0c;我查找到了一些有用的信息。 MySQL的UNION操作符用于将两个或多个SELECT语句的结果组合到一个结果集中&#xff0c;并去除重复的行。每个SELECT语句的列数和对应位置的数据类型必须相同。其基本语法格式如下&#xff1a; SELECT column…...

day21-ubuntu入门

小趣味docker 1.安装docker&#xff0c;从阿里云的yum yum install docker -y 2.需要提前准备好docker镜像&#xff0c;确保可用 docker -v 3.导入该游戏镜像&#xff08;先用systemctl start docker&#xff09; docker load < game_v2.tar 4.一条命令&#xff0c;在…...

开发小工具:ping地址

开发小工具&#xff1a;ping地址 import socketdef tcp_port_scan(ip,port):#创建套接字socksocket.socket(socket.AF_INET,socket.SOCK_STREAM)#设置超时sock.settimeout(0.2)try:#发请求result sock.connect_ex((ip,port))if result 0:print(f{ip}--{port}接口连接成功)res…...

告别手动计算!用Python+ArcPy脚本批量搞定MODIS ET数据从8天到月均值的完整流程

从8天到月均值&#xff1a;PythonArcPy全自动处理MODIS ET数据的工程实践 当面对跨越多年、覆盖大区域的MOD16A2数据集时&#xff0c;传统的手工操作不仅效率低下&#xff0c;还容易引入人为错误。本文将展示如何用PythonArcPy构建一套完整的自动化流程&#xff0c;实现从原始8…...

项目介绍 基于java+vue的校园舆情监测与预警系统设计与实现(含模型描述及部分示例代码)专栏近期有大量优惠 还请多多点一下关注 加油 谢谢 你的鼓励是我前行的动力 谢谢支持 加油 谢谢

基于javavue的校园舆情监测与预警系统设计与实现的详细项目实例 请注意此篇内容只是一个项目介绍 更多详细内容可直接联系博主本人 或者访问对应标题的完整博客或者文档下载页面&#xff08;含完整的程序&#xff0c;GUI设计和代码详解&#xff09; 校园舆情监测与预警系统…...

Adafruit统一传感器驱动:嵌入式开发中的硬件抽象与数据标准化实践

1. 项目概述&#xff1a;为什么我们需要传感器数据标准化&#xff1f;在嵌入式开发领域&#xff0c;尤其是物联网和智能硬件项目中&#xff0c;传感器是连接物理世界与数字世界的桥梁。然而&#xff0c;但凡有过实际项目经验的开发者&#xff0c;都或多或少经历过这样的困扰&am…...

FPGA新手必看:用Verilog手搓一个SPI Master控制器(Mode 0/3实战)

FPGA实战&#xff1a;从零构建SPI Master控制器的Verilog实现指南 1. 初识SPI协议与FPGA开发环境搭建 对于刚接触FPGA和数字电路设计的工程师来说&#xff0c;SPI&#xff08;Serial Peripheral Interface&#xff09;协议是一个理想的起点。这种同步串行通信协议广泛应用于传感…...

【自用】Kicad 导入嘉立创元器件封装(NLBN插件)

总览 1.安装插件 2.下载元件封装 3.配置 Kicad 4.效果演示 零、特别鸣谢 感谢插件提供者&#xff1a;linkyourbin UP主教学视频&#xff1a;https://www.bilibili.com/video/BV1W6AXz2EfR/?spm_id_from333.337.search-card.all.click&vd_source38d6ea3466db371e6c07c24…...

数据分析师简历封神指南:数据可视化 + 业务洞察双重点

引言:别让你的简历,死在6秒筛选期 “熟练使用Python、SQL、Tableau,擅长数据分析与可视化”——当HR第101次看到这句千篇一律的技能描述时,手指已经悬在“删除”键上。2026年数据分析师岗位竞争有多卷?某招聘平台数据显示,平均每个岗位收到250份简历,HR平均花6秒扫描一…...

蚂蚁百灵 Ring-2.6-1T 开源解析:万亿级思考模型如何实现「按需推理」

引言 2026年5月,蚂蚁百灵团队正式开源了其旗舰级思考模型 Ring-2.6-1T,这是一款拥有万亿参数的推理模型,在 AIME 2026 数学竞赛基准测试中取得了 95.83分 的惊人成绩,一跃成为国产开源 Agent 模型的新里程碑。更值得关注的是,该模型首次引入了 可调节的 Reasoning Effort…...

STM32F429三重ADC+DMA实战:从CubeMX配置到7.2MHz采样率代码调试全流程(避坑指南)

STM32F429三重ADCDMA极限采样实战&#xff1a;从CubeMX配置到7.2MHz数据采集全解析 在工业测量、医疗设备或高频信号分析领域&#xff0c;对高速数据采集的需求日益增长。当常规的单ADC方案无法满足采样率要求时&#xff0c;STM32F429的三重ADC交替采样模式配合DMA传输&#xf…...

【NS-3实战指南】NetAnim可视化调试与网络拓扑分析

1. NetAnim入门&#xff1a;从安装到第一个动画 第一次接触NS-3仿真的人往往会被命令行输出的数字搞得头晕眼花。记得我刚开始做无线网络仿真时&#xff0c;盯着终端里不断跳动的数据包统计数字&#xff0c;完全想象不出节点之间到底是怎么通信的。直到发现了NetAnim这个神器&a…...

架构实战:面向特种设备合规的非侵入式机器人跨层调度解耦设计

摘要&#xff1a; 在智能园区的多机协同配送业务中&#xff0c;如果上位机调度系统直接与底层品牌各异的电梯强耦合&#xff0c;不仅研发适配成本高&#xff0c;且入侵特种设备总线的方案极难通过国家特种设备检验局的安全审核。面对合规双重限制&#xff0c;架构师亟需一种高度…...