shell如何将标准错误输出重定向为标准输出
经常可以在一些脚本,尤其是在crontab调用时发现如下形式的命令调用
前半部分/tmp/test.sh > /tmp/test.log很容易理解,那么后面的2>&1是怎么回事呢?
要解释这个问题,还是得提到文件重定向。我们知道>和<是文件重定向符。那么1和2是什么?在shell中,每个进程都和三个系统文件 相关联:标准输入stdin,标准输出stdout和标准错误stderr,三个系统文件的文件描述符分别为0,1和2。所以这里2>&1 的意思就是将标准错误也输出到标准输出当中。
下面通过一个例子来展示2>&1有什么作用:
t
date
test.sh中包含两个命令,其中t是一个不存在的命令,执行会报错,默认情况下,错误会输出到stderr。date则能正确执行,并且输出时间信息,默认输出到stdout
./test.sh: line 1: t: command not found
$ cat test1.log
Tue Oct 9 20:51:50 CST 2007
可以看到,date的执行结果被重定向到log文件中了,而t无法执行的错误则只打印在屏幕上。
$ 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。
转载于:https://www.cnblogs.com/giraffe/archive/2012/07/26/2610352.html
shell如何将标准错误输出重定向为标准输出相关推荐
- stdout标准输出、stderr标准错误输出 标准输入、标准输出、标准错误输出分别被定义为0、1、2。
$ make > compile.log 2>&1 首先将标准错误输出也重定向到标准输出中,再将标准输出重定向到 compile.log 这个文件中.这样我们就可以将所有的输出都存 ...
- 如何理解Linux shell中的“2>1”(将文件描述2(标准错误输出)的内容重定向到文件描述符1(标准输出))(尼玛>符号竟然不支持搜索,害我搜搜不到,只能搜)
文章目录 前言 有何妙用 如何理解 总结 前言 有时候我们常看到类似这样的脚本调用: ./test.sh > log.txt 2>&1 这里的2>&1是什么意思?该如 ...
- linux错误日志重定向,Linux shell 重定向标准错误输出
文件描述符文件描述符是程序发送输出和获取输入的地方.当执行一个程序时,运行该程序的进程打开了3个文件描述符,分别是:0(标准输入).1(标准输出)和2(标准错误输出).重定向输出符号(>)是1& ...
- dup、dup2实现文件描述符重定向(标准输入、标准输出、标准错误输出)
目录 dup函数 dup2函数 重定向标准输入 重定向标准输出 重定向标准错误输出 重定向恢复 总结 在前文中,可以知道,文件描述符实际上是指向文件表项的指针数组索引,也就相当于每个文件描述符都对应一 ...
- linux 的错误输出黑洞,Linux的标准输出、标准错误输出、nohup
1.在bash中标准输出可以用1来表示:通常来说这个1可以省略: 如./xxx >/dev/null 和 ./xxx 1>/dev/null 是一个意思 2.在bash中标准错误输出可以用 ...
- Bash中的标准输入、标准输出和标准错误输出
原理 每个程序在运行后,都会至少打开三个文件描述符,分别是0:标准输入:1:标准输出:2:标准错误. 例如,对于test.sh脚本,我们通过下面的步骤看到它至少打开了三个文件描述符: ./test.s ...
- 如何在父进程中读取子(外部)进程的标准输出和标准错误输出结果
最近接手一个小项目,要求使用谷歌的aapt.exe获取apk软件包中的信息.依稀记得去年年中时,有个同事也问过我如何获取被调用进程的输出结果,当时还研究了一番,只是没有做整理.今天花点时间,将该方法整 ...
- pythonsys标准_python 以标准输出(sys.stdout)为例,看python的标准输入、标准错误输出...
标准输出(sys.stdout)对应的操作就是print(打印)了,标准输入(sys.stdin)则对应input(接收输入)操作,标准错误输出和标准输出类似也是print(打印). python最基 ...
- Shell:标准输入(stdin)、标准输出(stdout)、标准错误输出(stderr)介绍
UNIX系统shell使用 1.文件描述符0与进程的标准输入(一般是键盘)相关联: 2.文件描述符1与标准输出(一般是显示器)相关联: 3.文件描述符2与标准出错输出(一般是显示器)相关联 1.输出 ...
最新文章
- Python 进阶_生成器 生成器表达式
- 一文看尽7篇目标跟踪最新论文(ABCTracker/MAST/L1DPF-M等)
- 8.8-9 fsck、dd
- [ZJOI2005]午餐(贪心+dp)
- linux模块导出符号 EXPORT_SYMBOL_GPLEXPORT_SYMBOL(转)
- 学习笔记——逻辑斯蒂回归与最大熵模型
- arm-linux-gcc: No such file or directory
- [NOIp提高组2014]解方程
- 【ZOJ】3380 Patchouli's Spell Cards
- 地址栏js的写法(转载)
- 对于Gitlab项目的Developer权限问题 (Guest,Reporter,Developer,Maintainer)
- 风靡IT圈的史诗级漏洞log4j2的产生原理及复现
- Day19-22 2021/10/13-16 JAVA贪吃蛇 全注释版
- guid主分区表损坏如何处理_什么是GPT或GUID分区表
- 先验分布/后验分布/似然估计/贝叶斯公式
- Python学习手册 - 基础知识汇总(精简版)
- Git 工作流的一些经验分享
- 外媒曝华为“达芬奇计划” 或对英伟达构成威胁
- 旧笔记本装linux系统
- android 仿qq相册功能,Android第四十九期 - 仿QQ空间上传功能+本地数据库存储
热门文章
- spring 获取 WebApplicationContext的几种方法
- [Objective-C] Copy 和 MutableCopy
- linux下安装MySQL出错file /usr/share/mysql/charsets/latin2.xml from install of MySQL-......
- Remoting 技术
- CSS Sprites图片拼合生成器实现思路
- ICCV2013-Hybrid Deep Learning for Face Verification
- The Complete List of MIME Types
- Matlab调用Java类访问数据库
- 论文笔记之:Graph Attention Networks
- git 分支合并到当前