几乎所有的命令都会产生到屏幕的输出和从键盘获取输入,而在 Linux 系统中可以将输出发送到指定的文件,或从文件中读取输入。每一个 Shell 命令都有它自己的输入和输出。在一个命令执行之前,它的输入和输出可以使用由 Shell 解释的特殊标记重定向。例如,将 data 命令的输出发送到文件而不是屏幕。改变输入或输出的默认路径就叫做重定向。
在 Linux 中一切皆文件,所以你的硬件在 Linux 系统中同样地表示为文件。
- 0 —— 标准输入 —— 键盘:从文件(默认是键盘)读取输入。
- 1 —— 标准输出 —— 屏幕:发送数据到文件(默认是屏幕)。
- 2 —— 标准错误 —— 屏幕:发送所有错误信息到一个文件(默认是屏幕)。
上述 3 个数字是标准的 POSIX 字符,也称为文件描述符。每个 Linux 命令都会使用上述的流与用户或其他系统程序进行交互。
在 Shell 运行任何命令之前,它先尝试打开文件进行读取。如果打开文件失败,Shell 将以一个错误退出并不运行命令。如果打开文件成功,Shell 使用打开的文件的文件描述符作为命令的标准输入文件描述符。
标准输入具有如下特点:
- 它是默认的输入方法,他被所有命令使用来读取输入
- 它用数字 0 表示
- 它也被称作 stdin
- 默认的标准输入设备是键盘
操作符 “<” 是输入重定向操作符,其语法如下所示:
command < input_filename
比如,可以按照如下方式运行 cat 命令,在屏幕上显示 /etc/inittab 的内容:
cat < /etc/inittab
标准输入的数据流
利用标准输入,使用 sort 命令对一个文件的内容进行排序的方法如下所示:
sort < file_list
本文参考自 《Linux Shell命令行及脚本编程实例详解 》
网友评论