linux stdout/stderr重定向到文件,>或tee

news/2025/1/15 21:40:05/

正常情况下直接使用 '>'或者tee命令只能把stdout的终端输出重定向到文件中,而stderr的输出是无法写到文件中的。

比如在使用svn up时遇到svn 报错的错误,svn ERROR/WARNING 

用下面的语句是不会将ERROR/WARNING行写到svn.log的

svn up | tee svn.log

要想同时将这两类输出都写到文件中,可以如下操作

1. 使用 2> 或 2>> 重定向符号

  • 覆盖重定向
command 2> error.log

上述命令将 command 的标准错误输出重定向到名为 error.log 的文件中。如果 error.log 已经存在,原有的内容将被覆盖。

  • 追加重定向
command 2>> error.log

此命令将 command 的标准错误输出追加到 error.log 文件的末尾,不会覆盖原有的内容。

2. 同时重定向标准输出和标准错误

  • 使用 &> 或 >& 符号(适用于 bash)
command &> output.log

或者

command > output.log 2>&1

这两个命令的效果相同,都将 command 的标准输出和标准错误输出同时重定向到 output.log 文件中。

  • 使用 tee 命令
command 2>&1 | tee output.log

tee 命令将标准输出同时输出到屏幕和文件中。在上述示例中,先将标准错误输出重定向到标准输出(2>&1),然后使用 tee 命令将合并后的输出输出到屏幕和 output.log 文件中。

3. 分离标准输出和标准错误到不同文件

  • 同时使用 > 和 2>
command > output.log 2> error.log

此命令将 command 的标准输出重定向到 output.log 文件,同时将标准错误输出重定向到 error.log 文件。

4. 在脚本中使用重定向

以下是一个简单的示例脚本,将标准错误输出重定向到文件:

#!/bin/bash
# 尝试执行一个会产生错误的命令
ls non_existent_file 2> error.log
echo "This is the end of the script"

在上述脚本中,ls non_existent_file 会产生一个错误,因为文件不存在,该错误将被重定向到 error.log 文件中,而后续的 echo 语句正常输出到标准输出。

5. 结合管道和重定向

  • 将标准错误通过管道传递并最终重定向到文件
command 2>&1 | grep "error" > error.log

此命令将 command 的标准错误和标准输出合并,通过管道传递给 grep 命令,然后将包含 “error” 的行重定向到 error.log 文件中。

解释和使用注意事项

  • 重定向符号说明

    • > 表示覆盖重定向,将输出覆盖到指定文件。
    • >> 表示追加重定向,将输出添加到文件末尾。
    • 2> 专门用于重定向标准错误。
    • 2>> 是标准错误的追加重定向。
    • &> 或 >& 是同时重定向标准输出和标准错误。
  • 使用场景示例

    • 当你只想查看命令的错误信息时,使用 2> 或 2>> 可以将错误信息单独存储,方便后续分析错误。
    • 在脚本编写中,将错误信息和正常输出分开可以更清晰地管理输出,例如将错误信息存储在 error.log 中,将正常输出存储在 output.log 中。

通过以上方法,你可以根据不同的需求将标准错误输出重定向到文件,方便对命令的执行结果进行管理和分析。


http://www.ppmy.cn/news/1563433.html

相关文章

好用的php商城源码有哪些?

选择一个优秀的商城工具,能更好地帮助大家建立一个好用的商城系统。目前比较流行的都是开源PHP商城系统,那么现实中都有哪些好用的PHP商城源码值得推荐呢?下面就带大家一起来了解一下。 1.TigShop 【推荐指数】:★★★★★☆ 【推…

【MySQL数据库】基础总结

目录 前言 一、概述 二、 SQL 1. SQL通用语法 2. SQL分类 3. DDL 3.1 数据库操作 3.2 表操作 4. DML 5. DQL 5.1 基础查询 5.2 条件查询 5.3 聚合函数 5.4 分组查询 5.5 排序查询 5.6 分页查询 6. DCL 6.1 管理用户 6.2 权限控制 三、数据类型 1. 数值类…

CentOS 6.8 安装 Nginx

个人博客地址:CentOS 6.8 安装 Nginx | 一张假钞的真实世界 提前安装: # sudo yum install yum-utils 一般情况下这个工具系统已经安装。 创建文件/etc/yum.repos.d/nginx.repo,输入内容如下: [nginx-stable] namenginx stab…

Python跨年烟花

目录 系列文章 写在前面 技术需求 完整代码 下载代码 代码分析 1. 程序初始化与显示设置 2. 烟花类 (Firework) 3. 粒子类 (Particle) 4. 痕迹类 (Trail) 5. 烟花更新与显示 6. 主函数 (fire) 7. 游戏循环 8. 总结 注意事项 写在后面 系列文章 序号直达链接爱…

LLM实现视频切片合成 前沿知识调研

1.相关产品 产品链接腾讯智影https://zenvideo.qq.com/可灵https://klingai.kuaishou.com/即梦https://jimeng.jianying.com/ai-tool/home/Runwayhttps://aitools.dedao.cn/ai/runwayml-com/Descripthttps://www.descript.com/?utm_sourceai-bot.cn/Opus Cliphttps://www.opu…

Golang——Interface类型

本文详细介绍Golang的interface数据结构类型,包括基本实现和使用等。 文章目录 Go 语言中的 interface 详解接口定义实现接口空接口 interface{}示例:空接口的使用 interface 类型判断1. 类型断言(Type Assertion)语法示例类型转…

torch.einsum计算张量的外积

torch.einsum 是一种强大的张量操作工具,可以通过爱因斯坦求和约定(Einstein summation convention)来简洁地表示复杂的张量运算。通过它,我们可以高效地计算矩阵乘法、转置、点积、外积等操作。 以下是关于如何使用 torch.einsum 计算两个四维张量在第三维度上的外积的解…

JavaWeb开发 - Filter过滤器详解

前言 本章节主要学习JavaWeb开发中的Filter过滤器技术,收录于JavaWeb基础专栏,该专栏主要学习JavaWeb开发原生框架、Servlet、JSP、请求对象、响应对象、Session会话对象、Filter过滤器、三层开发模型等知识点,欢迎童鞋们互相交流。觉得不错可…