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的窍门以后,你就能够做很多功能强大的事情了。