一、系统中输入输出的管理
1. 理解系统的输入输出
- 系统运行一个程序时,需要从某个位置读取输入信息,然后经过cpu处理最后将输出显示到字符设备上,进程通过文件描述的编号通道来获取输入并输出(字符设备所在的目录是 / dev / pts)
- 输入设备: 就是键盘、鼠标和一些硬件设备在系统输入的字符
- 输出设备: 就是系统接收到我们想要实现的命令后,经过进程的处理产生字符并且输出到屏幕上
2. 管理输入输出的符号
2.1 输入
符号 | 用法 |
---|---|
< | 单行输入 |
<<EOF | 多行输入<<EOF开始录入直到再次出现EOF结束 |
2.2 输出重定向
符号 | 用法 |
---|---|
> | 定向正确输出 |
2> | 定向错误输出 |
&> | 定向所有输出 |
> file | 清空文件 |
- 注意:定向会覆盖原文件内容,且此实验必须在普通用户下完成
(1) find /etc/ -name passwd > file 定向正确输出到file
- su - 用户 可以高级用户切换到低级用户,但是要退出exit
(2) find /etc/ -name passwd 2> file 定向错误输出到 file
(3) find /etc/ -name passwd &> file 定向所有输出到file
2.3 输出追加
符号 | 用法 |
---|---|
>> | 追加正确输出到文件最后 |
2>> | 追加错误输出到文件最后 |
&>> | 追加所有输出到文件最后 |
- 注意:原文件不会被覆盖
find /etc/ -name passwd &>> file 追加所有输出到file
3.管道的应用
管道: 把前一条命令的输出变成后一条命令的输入
- 管道只允许正确输出通过
- 通过管道的输出将会变成输入,而变成输入的这些输出是会被第二条命令处理的
- 如果需要保存输出内容,那么需要复制一份输出,用到的命令是“tee”
(1)find /etc/ -name passwd | wc -l 结果为2,因为错误输出不能通过管道
(2) find /etc -name passwd 2>&1 | wc -l 结果为19,因为编号为2的输出被“2>&1”转换为编号1\
- 注意:“2>&1” 将一个标准错误输出重定向到标准输出 注释:1代表标准输出 2代表错误输出
(3) find /etc -name passwd 2>&1 | tee file | wc -l 保存一份输出到file再统计行数
- 注意:当使用tee时,一定要注意其与wc -l的顺序,如果wc -l在前,那么输出保存的内容便是wc -l统计的结果
4. 输入重定向
- 此模式必须在root超级用户模式下才能成,且以EOF结束才可以