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

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

正常情况下直接使用 '>'或者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.kler.cn/a/504330.html

相关文章:

  • Open FPV VTX开源之默认MAVLink设置
  • dockerfile2.0
  • 智能物流升级利器——SAIL-RK3576核心板AI边缘计算网关设计方案(一)
  • 计算机网络速成
  • 分多个AndroidManifest.xml来控制项目编译
  • .NET framework、Core和Standard都是什么?
  • 小结:华为交换机常用的操作指令
  • 43.Textbox的数据绑定 C#例子 WPF例子
  • Spring MVC复杂数据绑定-绑定数组
  • 13:00面试,13:08就出来了,问的问题有点变态。。。
  • 2025最新JAVA面试八股文【基础篇】
  • Rk3568 Andorid 11 新增adb检测,只有使用客户私钥的设备才能链接adb
  • 集中式架构vs分布式架构
  • 【硕博研究生国际会议推荐(可线上)】方向涵盖电子信息、人工智能、能源利用、自动化、数据处理、信息化经济、管理、智慧城市、公共交通、计算机视觉...
  • 数据结构和算法-07平衡二叉树-01
  • 《拉依达的嵌入式\驱动面试宝典》—Linux篇(六)_Linux驱动编程
  • pytest-instafail:让测试失败信息即时反馈
  • 【PyQt】通过load ui来实现菜单栏
  • burpsiute的基础使用(2)
  • 如何通过高防服务隐藏服务器源IP
  • 【docker下载kaggle国外镜像超时】kaggle比赛中时遇到的问题
  • 《深度剖析算法优化:提升效率与精度的秘诀》
  • 在Alpine这小破车里塞进Nginx?
  • 【Spring Boot 应用开发】-04-01 自动配置-数据源-连接池
  • Vue语音播报功能
  • 模拟退火算法在Matlab中的两个应用案例及代码