输入输出
运行一个程序时,需要从某个位置读取输入信息,然后CPU进行处理,最后将输出的结果显示到屏幕或者文件中
进程通过文件描述符的编号通道来获取输入并输出
1、标准输入、标准输出、标准错误
编号 | 通道名称 | 描述 | 默认连接 | 用法 |
---|---|---|---|---|
0 | stdin | 标准输入 | 键盘 | 读 |
1 | stdout | 标准输出 | 显示屏 | 写入 |
2 | stderr | 标准错误 | 显示屏 | 写入 |
2、可对输出进行管理 即 输出重定向 即将输出不显示在屏幕上,而是保存到其他地方
当用普通用户执行某些命令的输出时,由于普通用户权限问题,会有一些错误输出
例如用student执行 find /etc/ -name passwd 有两条正确输出和若干错误输出,此时可以将这些正确的和错误的输出 进行输出重定向
find /etc -name passwd 1>文件名 //重定向正确输出
find /etc -name passwd 2> 文件名 //重定向错误输出
find /etc -name passwd &>文件名 //重定向所有输出
注意: >, 2> ,&> 都会覆盖源文件内容 用 >> 2>> &>> 不会覆盖源文件内容,会把相应的输出字符加到文件的最后
find /etc -name passwd >> 文件名 //追加正确输出
find /etc -name passwd 2>> 文件名 //追加错误输出
find /etc -name passwd &>>文件名 //追加所有输出
3、管道
进程间的通信方式有:管道、信号量、信号、消息队列、共享内存、套接字
(1)管道
符号|
作用:将前一条命令的标准输出做为管道符后面命令的标准输入
其实就是把两条命令结合在一起了,要进行两次操作
先操作第一条命令,再对第一条命令的输出执行下一条命令 实现两个功能
例如: ls /bin | wc -l //统计ls /bin 命令输出的行数
(2)系统中错误的输出是无法通过管道的,要想让所有的正确和错误的输出都通过管道,用 2>&1 可以把错误的输出编号由2变成1
例如: find /etc -name passwd 2>&1 | wc -l
(3)tee
作用:拷贝通过管道的信息存起来
就相当于又多了一个功能呗,把第一条命令的输出保存起来了
实现三个功能例如: date |tee file |wc -l //tee命令复制date命令的输出到file中,并统计输出行数
(4)练习