原文地址:http://blog.sina.com.cn/s/blog_5842daa30101enz5.html
首先应当知道linux中有三种标准输入输出,分别是STDIN,STDOUT,STDERR,对应的数字是0,1,2。STDIN就是标准输入,默认从键盘读取信息;STDOUT是标准输出,默认将输出结果输出至终端,也就是显示器之类的东西;STDERR是标准的错误信息,默认也会显示在终端上。由于STDOUT与STDERR都会默认显示在终端上,为了区分二者的信息,就有了编号的0,1,2的定义,用1表示STDOUT,2表示STDERR。
find /etc-name passwd 1>find.out 2>find.err (>find.out左边默认为标准输出,所以上例可以写成
find /etc-name passwd >find.out 2>find.err)
若要将所有的输出及错误信息都显示出来,可以用&表示全部1和2的信息。
find /etc-name passwd &>find.all
有时候希望将错误的信息重新定向到输出,就是将2的结果重定向至1中就有了"2>1"这样的思路,如果按照上面的写法,系统会默认将错误的信息(STDERR)2重定向到一个名字为1的文件中,而非所想的(STDOUT)中。因此需要加&进行区分。就有了2>&1这样的用法。
find /etc-name passwd 2>&1 将错误信息重定向至标准输出