4.5 理解输入/输出流

要充分利用本章讲述的这些信息,就需要理解Linux shell的三种输入/输出流:标准输入流(standard input)、标准输出流(standard output)和标准错误流(standard error)。每种输入/输出流都有一个文件描述符(或数字标识符)、一个常用的缩写名和一个可用的默认设备。

例如,用键盘输入时,其实就是将输入发送到标准输入流,缩写为stdin,标识为0。当计算机将输出显示到终端时,使用的就是标准输出流,缩写为stdout,标识为1。如果计算机需要报告错误,并在终端上显示错误信息,使用的就是标准错误流,缩写为stderr,标识为2。

使用ls这个普通的命令,查看这三种输入/输出流。在键盘上输入ls,使用的是stdin。输入ls后按Enter键,目录中文件和文件夹的列表通过stdout显示出来。如果对并不存在的文件夹来运行ls命令,终端上出现的错误信息就是通过stderr而提供的。

表4-1能更直观地帮助你理解这三种流。 表4-1 三种输入/输出流

文件描述符(标识符) 名  称 常用缩写名 典型的默认设备
0 标准输入流 stdin 键盘
1 标准输出流 stdout 终端
2 标准错误流 stderr 终端

在本章中,我们将学习如何重定向输入和输出。例如,不让输出呈现在终端上,可以将输出重定向到其他程序。不从键盘接受输入,程序从文件获取输入。在理解了stdin和stdout的窍门以后,你就能够做很多功能强大的事情了。