一、理解什么是输入输出?
1.什么是IO(Input/Output):输入和输出
IO设备:和电脑通信的设备。
输入设备:麦克风,扫描器,键盘,鼠标等。
输出设备:显示器,打印机,投影仪,耳机,音响等。
2.为什么程序需要IO呢?
IO操作是一个相对的过程,一般的从程序的角度来理解(程序的内存)。
程序需要数据:把数据流入到程序中,输入。
程序需要保存数据:把数据传递给别人,输出。
-
字符设备
字符设备就是显示字符到屏幕上的设备文件 -
stdin
标准输入
编号为0
存放在/proc/xxxx(进程号)/ fd / 0 -
stdout
标准正确输出
标号为1
存放在/proc/xxxx(进程号)/ fd / 1 -
stderr
标准错误输出
标号为2
存放在/proc/xxxx(进程号)/ fd / 2
二、补充知识
1. Linux的 /proc目录介绍
-
linux系统上的/proc目录是一种文件系统,即proc文件系统。与其他常见的文件系统不同,它是一种伪文件系统(虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。
-
/proc目录中包含许多以数字命名的子目录,这些数字表示系统当前正在运行进程的进程号,里面包含对应进程相关的多个信息文件。
2. 什么是进程和子进程? -
进程就是运行起来的程序,程序运行起来需要被加载到内存中。
-
查看进程的命令
ps -ef:查看所有的进程信息
ps -aux:查看进程的详细信息
top:查看进程信息
或
子进程的输入输出文件是独立的。
三、如何管理输入
输入:外界传递到程序中的信息
1. < 输入重定向
例: tr ‘a-z’ ‘A-Z’ < test
把test文件中的内容定向到tr程序中
- 什么是输入重定向,为什么需要输入重定向?
所谓输入重定向就是,将默认进程的输入,定向到所需进程的输入内。
可以优化代码,提高代码的运行效率。
2. << 多行录入
例:passwd <<EOF(字符任意)
westos
westos
EOF (当首字母再次出现表示录入结束)
四、如何管理输出
1. 输出重定向
-
“>”
-
2>
-
&>
find /etc -name passwd > westos.out
重定向正确输出
find /etc -name passwd 2> westos.out
重定向错误输出
find /etc -name passwd &> westos.out
重定向所有输出
注意:重定向管理输出后会覆盖原文件内容
2. 追加 -
“>>”
-
2>>
-
&>>
find /etc -name passwd >> westos.out
追加正确输出
find /etc -name passwd 2>> westos.out 追加错误输出
find /etc -name passwd &>> westos.out 追加所有输出
注意:追加和重定向功能类似,但是不会覆盖原文件内容
3. 管道 “|”
把前一条命令的输出编程输入传递到下一条命令进行操作。
注意:
- 管道只处理正确输出
- 2>&1把编号为2的输入转换到编号为1的输出中
- tee 复制输出到指定位置
- 管道在一条命令中可以使用多次
四、练习汇总
在普通用户下执行命令完成以下操作:
-
查找 /etc/ 下的passwd文件屏蔽错误输出
-
查找 /etc/ 下的passswd文件正确输出保存到/tmp目录中的westos.out中,错误输出保存到 /tmp/目录中的westos.err中
-
查找 /etc/下的passwd文件保存所有输出到/tmp目录中的westos.all中并统计输入的行数
使用通道符号,一条指令。
-
查找 /etc/下的passwd文件统计输出行数并显示输出内容
-
转换 /etc/目录中passwd文件中的所有字母为大写并统计文件行数
-
使用脚本非交互模式编写westos.file内容为:
hello linux
hello westos
hello linux
westos linux is very nice!!