在POSIX shell中,命令的结果可以通过%>的形式来定义(其中%表示文件描述符:1为标准输出stdout、2为标准错误stderr)!系统默认% 值是1,也就是1>,而1>可以简写为>,也就是默认为>。而stdout的默认目标是终端。 stderr的默认目标我也是终端,比如:

#aaa

sh: aaa: not found.

错误信息显示在终端上。

==============简单说明==============

#ls>redout.lst (等同于ls 1>redout.lst,标准输出重定向)

系统先执行>redout.lst,生成一个空文件,然后系统执行ls,再把结果重定向到redout.lst。这时在终端看不到任何信息,但是#more redout.lst可以看到a1、a2、a3、a4和redout.lst。

#./ourgame 2>rederr.lst (标准错误重定向)

因为系统找不到执行脚本ourgame,产生错误,但并不是显示在终端上,而是把错误信息重定向到了rederr.lst。

#more rederr.lst

sh: ourgame: not found.

(1)、输出重定向到文件a1,终端上只能看到标准错误:

#./conj > resu

或者 ./conj 1>resu

(2)、错误重定向到文件resu,终端上只能看到标准输出:

#./conj  2> resu

(3)、把标准输出和标准错误都重定向到resu,终端上看不到任何信息:

#./conj >resu  2>&1

//其中&的意思,可以看成是“The same as”、“与…一样”的意思。本例中就是2>;和1>;一样,都输出到resu中。

#./conj  2>&1 >resu

同样可以解释为2>和1>一样,但是这时1>是系统默认输出到终端,所以标准错误也输出到终端;然后,系统把标准输出重定向到文件resu。