shell命令 2>&1
来源:互联网 发布:麦哈顿 软件 编辑:程序博客网 时间:2024/05/29 16:43
在unix高级环境编程第三章的习题有一个问题:
./a.out > outfile 2>&1 # 1
./a.out 2&1 > outfile # 2
问这两者有什么区别。
这个首先的说明几点:
1.在unix和类unix(Linux之类)中以文件描述符的形式打开一个文件,这个文件描述符是一个非负数。
2.0代表标准输入,1代表标准输出,2代表标准错误输出
3.默认的情况下是1 所以> 等价于 1>,比如我们用文件描述符5打开了一个文件a,可以写成5>
4.shell命令的执行是从左往右
那么现在来看这两者有什么区别
对于第一条命令,首先是将a.out的内容标准输出,然后通过>(等价于1>,所以只对标准输出起作用)重定向到outfile,然后2>&1说明标准错误输出也往标准输出去,而由于之前标准输出以及重定向到了outfile,所以这里的错误输出也会重定向到outfile。
再看第二条命令,首先是a.out到标准输出,然后2>&1,所以标准错误输出也重定向到保准输出(注意此时的标准输出没有被重定向,所以默认是终端上),然后 > outfile ,这个说明此时再将标准输出到outfile,但是请注意标准错误输出2>不会也跟着被重定向到outfile,因为更改标准输出重定向在2>&1的后面。
在跑Spark示例程序时,输出信息会很多,可使用“2>/dev/null”将错误信息过滤
[hadoop@localhost spark-1.6.2-bin-hadoop2.6]$ run-example SparkPi 2>/dev/null##结果Pi is roughly 3.13928
或者将标准错误重定向到终端,然后用管道命令“|”截取
[hadoop@localhost spark-1.6.2-bin-hadoop2.6]$ run-example SparkPi 2>&1 | grep "Pi is "##结果Pi is roughly 3.1439
参考资料:
1.shell命令 2>&1
0 0
- shell命令 2>&1
- shell命令 2>&1
- shell命令 2>&1
- shell中的"2>&1"命令
- shell中2>&1之类的命令
- shell基本命令2
- 常用Shell命令2
- Linux shell命令2
- Shell 命令汇集1
- shell基本命令1
- 常用Shell命令1
- shell命令(1)
- shell 命令(Unix/Linu命令)(2)
- shell 命令(Unix/Linu命令)(1)
- LINUX shell编程2 命令
- (2) linux shell 命令 -- cd
- Linux的shell命令2
- Hadoop Shell命令(1)
- Android 源码分析之基于NuPlayer的HLS流媒体协议
- java知识总结(三)封装、继承和多态
- 移动端自适应rem算法
- JS localStorage
- Ubuntu 14.04 内核升级 详细步骤
- shell命令 2>&1
- FileUtils工具类的使用
- mysql 批量更新
- 374. Guess Number Higher or Lower
- ZCMU-校赛B-1777
- 购物车与商城订单的关系以及技术实现深入分析
- 二.前端安全之XSS
- Linux nfs 部署和优化
- Android 源码分析之基于Stagefright的MediaPlayer播放框架[4]