Linux中输入输出重定向中2>&1的使用(转)

Linux中输入输出重定向中2>&1的使用(转)

实例

1)command 2>errfile : command的错误重定向到文件errfile。

2)command 2>&1 | ...: command的错误重定向到标准输出,错误和标准输出都通过管道传给下个命令

3)var=`command 2>&1`: command的错误重定向到标准输出,错误和标准输出都赋值给var。

4)command 3>&2 2>&1 1>&3 | ...:实现标准输出和错误输出的交换。

5)var=`command 3>&2 2>&1 1>&3`:实现标准输出和错误输出的交换。

6)command 2>&1 1>&2 | ...     (wrong...) :这个不能实现标准输出和错误输出的交换。因为shell从左到右执行命令,当执行完2>&1后,错误输出已经和标准输出一样的,再执行 1>&2也没有意义。

"2>&1 file"和 "> file 2>&1"区别

1)cat food 2>&1 >file :标准输出被重定向到文件file,错误输出到终端。

2)cat food >file 2>&1 :错误输出重定向到和标准输出一样,标准输出被重定向到文件file,然后,错误和标准都输出到文件file。

补充

       通常打开的文件在进程推出的时候自动的关闭,但是更好的办法是当你使用完以后立即关闭。用m<&-来关闭输入文件描述符m,用 m>&-来关闭输出文件描述符m。如果你需要关闭标准输入用<&-; >&- 被用来关闭标准输出。

原文地址:http://www.cnblogs.com/yangyongzhi/p/3364939.html

猜你喜欢

转载自crabdave.iteye.com/blog/2272374