除了标准输入和标准输出以外,命令还经常产生其他类型的输出,比如错误或者通称为诊断输出的状态消息。和标准输出一样,除非被重定向,否则标准错误输出将被写至屏幕。
要重定向标准错误或其他输出,请使用文件描述符。文件描述符是与命令通常使用的 I/O 文件相关的数字。文件描述符也可以被指定用来将标准输入和标准输出重定向,但已经是缺省值。以下数字与标准输入、输出和错误相关联:
0 | 标准输入(键盘) |
1 | 标准输出(显示器) |
2 | 标准错误(显示器) |
要重定向标准错误输出,在输出前面输入文件描述符编号 2,或者追加重定向符号(> 或 > >),后面跟文件名。例如,以下命令获取 cc 命令(用于编译 testfile.c 文件)的标准错误输出,并将其追加到 ERRORS 文件结尾:
cc testfile.c 2 >> ERRORS
其他类型的输出也可使用文件描述符 0 到 9 进行重定向。例如,如果 cmd 命令将输出写至文件描述符 9,那么可以使用下面的命令将该输出重定向到 savedata 文件:
cmd 9> savedata
如果某个命令写到多于一个的输出,那么可以将每个输出分别重定向。假设一个命令将其标准输出定向到文件描述符 1,将其标准错误输出定向到文件描述符 2,在文件描述符 9 上建立数据文件。以下命令行将这些输出分别重定向到不同的文件:
command > standard 2> error 9> data