程序应该有数据来源端,数据的目的端,以及报告问题的地方。
分别被称为standard input , standard output , standart error 。
程序不需要知道这些标准设备的实际代表的设备内容,磁带机,硬盘,还是网络设备。
许多Unix程序都遵守这个原则
会读取标准输入,写入标准输出,并将错误传递到标准错误输出,这类程序叫过滤器( filter )。
默认的标准输入,标准输出,标准错误输出都是终端。
这个是在登录终端时候的默认设置。
IO重定向,就是通过与终端交互或者在shell里修改默认的标准输入,标准输出以及标准错误输出。
< 改变标准输入
> 改变标准输出
>> 附加到文件
| 管道, 想象成自来水管,里边的信息沿着管道流淌
command1 | command2 的情况下, command1 的标准输出修改为command2的标准输入。
> 或者 < 可以把输出,输入连接到文件,但是管道的速度更快(不需要读取硬盘操作)。
把> 和 < 想象成漏斗, 数据从大的一方流向小的一段出来,大概这就是filter的起源吧。