shell 编程之2>&1含义
来源:互联网 发布:淘宝旺旺号怎么注册 编辑:程序博客网 时间:2024/06/05 04:30
经常可以在一些脚本,尤其是在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。
如:
nohup /mnt/Nand3/H2000G >/dev/null 2>&1 &
对于& 1 更准确的说应该是文件描述符 1,而1 一般代表的就是STDOUT_FILENO,实际上这个操作就是一个dup2(2)调用.他标准输出到all_result ,然后复制标准输出到文件描述符2(STDERR_FILENO),其后果就是文件描述符1和2指向同一个文件表项,也可以说错误的输出被合并了.其中0 表示键盘输入 1表示屏幕输出 2表示错误输出.把标准出错重定向到标准输出,然后扔到/DEV/NULL下面去。通俗的说,就是把所有标准输出和标准出错都扔到垃圾桶里面。
command >out.file 2>&1 &
command >out.file是将command的输出重定向到out.file文件,即输出内容不打印到屏幕上,而是输出到out.file文件中。 2>&1 是将标准出错重定向到标准输出,这里的标准输出已经重定向到了out.file文件,即将标准出错也输出到out.file文件中。最后一个& , 是让该命令在后台执行。
- shell 编程之2>&1含义
- linux shell编程 变量$#,$@,$0,$1,$2的含义解释
- shell 编程之2>&1
- shell 编程之2>&1
- shell 编程之2>&1
- shell 编程之2>&1
- Linux Shell脚本编程--变量$#,$@,$*,$?,$0,$1,$2的含义解释
- Linux Shell脚本编程--变量$#,$@,$*,$?,$0,$1,$2的含义解释
- Linux Shell脚本编程--变量$#,$@,$*,$?,$0,$1,$2的含义解释
- shell 编程之2>&1问题
- linux shell 中"2>&1"含义
- linux shell 中"2>&1"含义
- linux shell 中"2>&1"含义
- linux shell 中 "2>&1" 含义
- linux shell 中"2>&1"含义
- linux shell 中"2>&1"含义
- linux shell 中"2>&1"含义
- linux shell 中2&1含义
- 揭开linux内核中container_of的神秘面纱
- SUID、SGID、STICKY简介
- 理解cookie和session机制
- 深入研究java.lang.ThreadLocal类
- access函数使用
- shell 编程之2>&1含义
- nginx 请求server与location配置定位
- 字与字节的区别
- ffmpeg编译时保留调试信息
- nohup命令
- onStartCommand方法返回的数值问题
- 如何计算地址线和数据线
- ARG_MAX
- POJ 3158 Kickdown(我的水题之路——齿轮盒子,读题失败)