日期:2014-05-16  浏览次数:20723 次

还是请教最简单的SHELL编程
请问下面这句话什么意思?
mkdir   $DIREC> /dev/null   2> &1
1、建目录之后为什么要重定向到/dev/null  
2、/dev/null   是什么意思?
3、2> &1呢?

------解决方案--------------------
1. 重定向到/dev/null 表示指定屏幕输出路径为/dev/null
2. 一个空的虚拟设备
3. &1 更准确的说应该是文件描述符 1, 而1 代表的就是STDOUT_FILENO,实际上这个操作就是一个dup2(2)调用.他标准输出到all_result ,然后复制标准输出到文件描述符2(STDERR_FILENO),其后果就是文件描述符1和2指向同一个文件表项,也可以说错误的输出被合并了

0表示键盘输入
1表示屏幕输出
2表示错误输出

因此,2> &1 就表示 错误信息重定向到 普通输出 的路径下

比如
1> /dev/null 2> &1

先将stdout重定向到/dev/null,再将错误信息重定向到stdout,则错误信息将写入/dev/null,通常用于我们需要结果$?,但又不想看到错误提示的时候

------解决方案--------------------
楼上正解, 完全正确. 我就不废话了.