shell_2>&1问题(重定向)
来源:互联网 发布:淘宝充值网店怎么开 编辑:程序博客网 时间:2024/06/13 01:29
【转】shell 编程之2>&1
经常可以在一些脚本,尤其是在crontab调用时发现如下形式的命令调用
/tmp/test.sh > /tmp/test.log 2>&1前半部分/tmp/test.sh > /tmp/test.log很容易理解,那么后面的2>&1是怎么回事呢?
要解释这个问题,还是得提到文件重定向。
我们知道>和<是文件重定向符。那么1和2是什么?
在shell中,每个进程都和三个系统文件相关联:
标准输入stdin 文件描述符分别为1
标准输出stdout文件描述符分别为2
标准错误stderr文件描述符分别为3
所以这里2>&1的意思就是将标准错误也输出到标准输出当中。
下面通过一个例子来展示2>&1有什么作用:
$ cat test.sht
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无法执行的错误打印在屏幕上。
后面跟上2>&1
屏幕什么都没有显示
$ cat test2.log
./test.sh: line 1: t: command not found
Tue Oct 9 20:53:44 CST 2007
stderr的内容都也被重定向到log文件中了。
实际上,>就相当于1>(默认是标准输出,所以可以省写),也就是重定向标准输出,不包括标准错误。
通过2>&1,就将标准错误重定向到标准输出了,那么再使用 > 重定向就会将标准输出和标准错误信息一起重定向了。
如果只想重定向标准错误到文件中,则可以使用2>文件名。
- shell_2>&1问题(重定向)
- shell_2
- Servlet 重定向问题
- servlet重定向问题
- sudo 重定向问题
- sudo 重定向问题
- 重定向问题
- 重定向问题
- shell 重定向问题
- 输入输出重定向问题
- nohup重定向问题
- 重定向问题浅析
- ajax重定向问题
- php 重定向问题
- 重定向问题浅析
- responsesendRedirect();重定向失效问题
- 关于重定向的问题
- shell 重定向问题分析
- Ubuntu 10.04 U盘安装显示完Ubuntu图标后,屏幕黑屏显示器无信号
- 自定义Dialog设置样式(去除白边)
- 命名管道创建和读写
- linux下cat命令详解
- jQuery插件开发全解析
- shell_2>&1问题(重定向)
- android中跨历程通讯的4种方式
- whereis命令
- locate命令
- find命令
- /bin/sh^M:损坏的解释器: 没有那个文件或目录
- java多线程编程--抽象方法加锁
- <meta http-equiv="X-UA-Compatible" content="IE=edge" /> 的说明
- segment and section for c++ elf