在系统内部,UNIX是以一个整数数字,称为文件描述符(file descriptors),表示每个进程打开的文件。传统上,Shell允许打开至多10个文件,文件描述符从0,1,2,...,9
一般来说,
文件描述符0,表示标准输入
文件描述符1,表示标准输出
文件描述符2,表示标准错误输出
比如,将程序的输出传输到一个文件,而程序的错误信息输出到另一个文件:
make 1> out.log 2>err.log
当然,如果你想舍弃错误信息,可以将错误信息输出到文件/dev/null,在linux中,我们知道输出到/dev/null的内容会被系统丢弃掉:
make 1> out.log 2>/dev/null
其实 1> out.log 中的1是没有必要的,因为输出重定向的默认文件描述符就是标准输出:文件描述符1,可以这样:
make > out.log 2>err.log
当然,如果你想把程序的标准输出、错误信息都输出到同一个文件,可以这样:
make > out.log 2>&1
注意, 2>&1 这4个字符是紧接着的,之间不能有空格的。