在shell中执行命令时,每个进程都和三个打开的文件相联系,并使用文件描述符来引用这些文件,这些文件如下图:
标准输入、输出的文件描述符一般可以省略,但是标准错误的文件描述符是不可以省略的。
文件描述符,说白了就是提供给用户选择标准输入的方式。
1、标准输入
标准输入是文件描述符0。缺省是键盘,也可以是文件或者是其他命令的输出。
主要情况如下:
1)用户不选择:使用缺省——键盘;
2)用户选择文件:通过重定向,把文件输出给命令,说白了就是,文件代替了键盘输入;
3)用户选择其他命令的输出:通过管道,把其他命令的输出,传输给其他命令。
1、2、3用户只能选择其一。
2、标准输出
标准输出是文件描述符1。它是命令的输出,缺省是屏幕,也可以是文件。
主要情况如下:
1)、用户不选择:使用缺省——屏幕(终端);
2)、用户选择文件:通过重定向,把命令的输出写到文件中。
1、2用户只能选择其一,也就是说,选择2时,屏幕就看不到输出。
3、标准错误
标准错误是文件描述符2,它是命令错误的输出,缺少是屏幕,也可以是文件。情况参照标准输出。