理解系统的输入输出
1.理解系统的输入输出
字符设备是指I/O传输过程中以字符为单位进行传送的设备,例如键盘、打印机等。在linux系统中,字符设备以特别文件方式在文件目录树中占据位置。
例如:
date
显示的字符串存放在dev/pts/0
linux系统中,1表示正确输出,2表示错误输出
shell中的指令—>cpu产生运算结果—>字符设备(默认/dev/pst)
输入输出系统是计算机系统中的主机与外部进行通信的系统。它由外围设备和输入输出控制系统两部分组成,我们在shell中键入指令,然后送入cpu中运算产生结果,再将结果送到字符设备中显示。
管理输入输出的符号
(1)输出重定向
> #重定向正确输出
2> #重定向错误输出
&> #重定向所有输出
备注:重定向会覆盖原文件内容
(file、file.err、file.all中原有内容会被覆盖)
示例:
注意:以下示例必须在student(普通用户)用户下完成
find /etc/ -name passwd > file #定向正确输出到file
find /etc/ -name passwd 2> file.err #定向错误输出到file.err
find /etc/ -name passwd &> file.all #定向所有输出到file.all
(2)输出追加
find /etc/ -name passwd >> file #追加正确输出到file
find /etc/ -name passwd 2>> file.err #追加错误输出到file.err
find /etc/ -name passwd &>> file.all #追加所有输出到file.all
管道的作用
“|”作用:把前一条命令的输出变成后一条命令的输入(前后都是命令)
注意:管道只允许正确输出通过
通过管道的输出将会变成输入,而变成输入的这些输出是会被第二条命令处理的
如果需要保存输出内容,那么需要复制一份输出,命令为“tee filename”
在普通用户下实验:
ls /bin/ | wc -l
--> 1587
find /etc/ -name passwd | wc -l #结果为2,因为错误输出不能通过管道
find /etc/ -name passwd 2>&1| wc -l #结果为19,因为编号为2被“2>&1”转换为编号1
find /etc/ -name passwd 2>&1|tee file| wc -l #保存一份输出到file再统计行数
输入重定向
允许用户不通过键盘输入而从文件中得到输入数据,这就允许用户使用一些编辑器生成一些文件,然后将文件内容输送到一个命令中。
简单说,一般输入设备总是键盘,如果你把文件的内容作为输入,这个就是“输入重定向”
输入重定向的意思是在命令行一条一条输入的内容不必很繁琐的输入
只需要将所有想要执行的命令打包其写入一个文件中,执行此文件便可
(1)使用tr命令将westos文件中的小写字母转为大写字母显示
(2)将命令打包到sh文件,执行文件相当于执行该命令
(3)用输入重定向同时执行date、cal、passwd命令
<<之后的字符表示开始,当再次出现相同的字符时,停止输入,可以自定义字符