shell如何将标准错误输出重定向为标准输出

经常可以在一些脚本,尤其是在crontab调用时发现如下形式的命令调用

/tmp/test.sh > /tmp/test.log 2>&1

前半部分/tmp/test.sh > /tmp/test.log很容易理解,那么后面的2>&1是怎么回事呢?

要解释这个问题,还是得提到文件重定向。我们知道>和<是文件重定向符。那么1和2是什么?在shell中,每个进程都和三个系统文件 相关联:标准输入stdin,标准输出stdout和标准错误stderr,三个系统文件的文件描述符分别为0,1和2。所以这里2>&1 的意思就是将标准错误也输出到标准输出当中。

下面通过一个例子来展示2>&1有什么作用:

$ cat test.sh
t
date

test.sh中包含两个命令,其中t是一个不存在的命令,执行会报错,默认情况下,错误会输出到stderr。date则能正确执行,并且输出时间信息,默认输出到stdout

./test.sh > test1.log
./test.sh: line 1: t: command not found

$ cat test1.log
Tue Oct 9 20:51:50 CST 2007

可以看到,date的执行结果被重定向到log文件中了,而t无法执行的错误则只打印在屏幕上。

$ ./test.sh > test2.log 2>&1

$ cat test2.log
./test.sh: line 1: t: command not found
Tue Oct 9 20:53:44 CST 2007

这次,stderr和stdout的内容都被重定向到log文件中了。

实际上, > 就相当于 1> 也就是重定向标准输出,不包括标准错误。通过2>&1,就将标准错误重定向到标准输出了,那么再使用>重定向就会将标准输出和标准错误信息一同重定向了。如果只想重定向标准错误到文件中,则可以使用2> file

posted on 2012-07-26 16:57 长颈鹿Giraffe 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/giraffe/archive/2012/07/26/2610352.html

shell如何将标准错误输出重定向为标准输出相关推荐

  1. stdout标准输出、stderr标准错误输出 标准输入、标准输出、标准错误输出分别被定义为0、1、2。

    $ make > compile.log 2>&1 首先将标准错误输出也重定向到标准输出中,再将标准输出重定向到 compile.log 这个文件中.这样我们就可以将所有的输出都存 ...

  2. 如何理解Linux shell中的“2>1”(将文件描述2(标准错误输出)的内容重定向到文件描述符1(标准输出))(尼玛>符号竟然不支持搜索,害我搜搜不到,只能搜)

    文章目录 前言 有何妙用 如何理解 总结 前言 有时候我们常看到类似这样的脚本调用: ./test.sh > log.txt 2>&1 这里的2>&1是什么意思?该如 ...

  3. linux错误日志重定向,Linux shell 重定向标准错误输出

    文件描述符文件描述符是程序发送输出和获取输入的地方.当执行一个程序时,运行该程序的进程打开了3个文件描述符,分别是:0(标准输入).1(标准输出)和2(标准错误输出).重定向输出符号(>)是1& ...

  4. dup、dup2实现文件描述符重定向(标准输入、标准输出、标准错误输出)

    目录 dup函数 dup2函数 重定向标准输入 重定向标准输出 重定向标准错误输出 重定向恢复 总结 在前文中,可以知道,文件描述符实际上是指向文件表项的指针数组索引,也就相当于每个文件描述符都对应一 ...

  5. linux 的错误输出黑洞,Linux的标准输出、标准错误输出、nohup

    1.在bash中标准输出可以用1来表示:通常来说这个1可以省略: 如./xxx >/dev/null 和 ./xxx 1>/dev/null 是一个意思 2.在bash中标准错误输出可以用 ...

  6. Bash中的标准输入、标准输出和标准错误输出

    原理 每个程序在运行后,都会至少打开三个文件描述符,分别是0:标准输入:1:标准输出:2:标准错误. 例如,对于test.sh脚本,我们通过下面的步骤看到它至少打开了三个文件描述符: ./test.s ...

  7. 如何在父进程中读取子(外部)进程的标准输出和标准错误输出结果

    最近接手一个小项目,要求使用谷歌的aapt.exe获取apk软件包中的信息.依稀记得去年年中时,有个同事也问过我如何获取被调用进程的输出结果,当时还研究了一番,只是没有做整理.今天花点时间,将该方法整 ...

  8. pythonsys标准_python 以标准输出(sys.stdout)为例,看python的标准输入、标准错误输出...

    标准输出(sys.stdout)对应的操作就是print(打印)了,标准输入(sys.stdin)则对应input(接收输入)操作,标准错误输出和标准输出类似也是print(打印). python最基 ...

  9. Shell:标准输入(stdin)、标准输出(stdout)、标准错误输出(stderr)介绍

    UNIX系统shell使用 1.文件描述符0与进程的标准输入(一般是键盘)相关联: 2.文件描述符1与标准输出(一般是显示器)相关联: 3.文件描述符2与标准出错输出(一般是显示器)相关联 1.输出 ...

最新文章

  1. Python 进阶_生成器 生成器表达式
  2. 一文看尽7篇目标跟踪最新论文(ABCTracker/MAST/L1DPF-M等)
  3. 8.8-9 fsck、dd
  4. [ZJOI2005]午餐(贪心+dp)
  5. linux模块导出符号 EXPORT_SYMBOL_GPLEXPORT_SYMBOL(转)
  6. 学习笔记——逻辑斯蒂回归与最大熵模型
  7. arm-linux-gcc: No such file or directory
  8. [NOIp提高组2014]解方程
  9. 【ZOJ】3380 Patchouli's Spell Cards
  10. 地址栏js的写法(转载)
  11. 对于Gitlab项目的Developer权限问题 (Guest,Reporter,Developer,Maintainer)
  12. 风靡IT圈的史诗级漏洞log4j2的产生原理及复现
  13. Day19-22 2021/10/13-16 JAVA贪吃蛇 全注释版
  14. guid主分区表损坏如何处理_什么是GPT或GUID分区表
  15. 先验分布/后验分布/似然估计/贝叶斯公式
  16. Python学习手册 - 基础知识汇总(精简版)
  17. Git 工作流的一些经验分享
  18. 外媒曝华为“达芬奇计划” 或对英伟达构成威胁
  19. 旧笔记本装linux系统
  20. android 仿qq相册功能,Android第四十九期 - 仿QQ空间上传功能+本地数据库存储

热门文章

  1. spring 获取 WebApplicationContext的几种方法
  2. [Objective-C] Copy 和 MutableCopy
  3. linux下安装MySQL出错file /usr/share/mysql/charsets/latin2.xml from install of MySQL-......
  4. Remoting 技术
  5. CSS Sprites图片拼合生成器实现思路
  6. ICCV2013-Hybrid Deep Learning for Face Verification
  7. The Complete List of MIME Types
  8. Matlab调用Java类访问数据库
  9. 论文笔记之:Graph Attention Networks
  10. git 分支合并到当前