ls -l > out.file 2>&1 &
解释:
ls -l > out.file //将ls的输出重定向到文件out.file
2>&1 //在shell中,文件描述符通常是:STDIN,STDOUT,STDERR,即:0,1,2,由此可以看出,它将ls -l > out.file在输出过程中产生的错误信息也放在了STDOUT,即:1中,你可以作实验,如果命令产生了错误,那么错误信息也就在out.file中.
最后的& ,不用说,是放在后台运行.
2>&1你可以这么理解:把标准错误输出重定向>,通过后台&,放到标准输出所在的地方.因为是在后台运行,所以你是看不见出错信息的.因此,&,可以理解成是后台行为.
与javalee兄“较劲”
我不同意将“>&”“&>”这类I/O重定向运算符分开来理解,它们是一个整体,就象我们把“+”理解成相加,但不能把“++”理解成相加两次一样。
http://www.linuxsir.com/bbs/showthre...threadid=38203
我不同意将“>&”“&>”这类I/O重定向运算符分开来理解,它们是一个整体,就象我们把“+”理解成相加,但不能把“++”理解成相加两次一样。
http://www.linuxsir.com/bbs/showthre...threadid=38203
If you type >1,The shell will think take this as a file named 1
So you want to type &1 to distinguish.
So 2>&1 means redirect stderr to stdout.
You redirect stdout to fileanme, so that all stderr and stdout will redirect to filename.
If my understanding is wrong, please correct it.
So you want to type &1 to distinguish.
So 2>&1 means redirect stderr to stdout.
You redirect stdout to fileanme, so that all stderr and stdout will redirect to filename.
代码:
stderr -> stdout -> filename.