前言
本章主要介绍linux中的输入输出管理,包括输入输出的定义,输入重定向、多行输入、输出重定向、管道等。
一、什么是输入输出
输入:通过键盘、鼠标、打字机等输入设备为计算机提供输入的信息,标记为0。
输出:输出包括标准正确输出,标记为1;标准错误输出,标记为2。
当我们打开一个shell时,系统会将我们的输入信息村初到xx/fd/0中,将标准正确输出村初到xx/fd/1中,将标准错误输出存储到xx/fd/2中,其中xx是指进程文件中锁打开shell对应的.bash的id。
二、如何管理输出
注:以下实验均在普通客户下进行。
1.输出重定向 >
首先,查找/etc/passwd,查看结果
find /etc -name passwd
结果中正确输出2个,错误输出14个,总共输出16个。
将正确输出结果重定向到westos文件中,查看westos文件
find /etc -name passwd > westos
将错误输出结果重定向到westos1中,
find /etc -name passwd 2> westos1
将全部结果重定向到westos2中
find /etc -name passwd &> westos2
2.追加 >>
顾名思义,就是将输出重定向的结果追加到一个非空白文件中,追加不会覆盖原文件内容。
find /etc -name passwd 2>> westos
3.管道 |
把前一条命令的输出变成输入传递到下一条命令进行操作.
查找/etc/passwd,将正确查找结果保存到 westosfile中,并统计输出行数。
find /etc -name passwd | tee westosfile | wc -l
其中,tee是复制输出到指定位置,wc -l 统计行数(之前的章节有讲过)。
注:管道只处理正确输出,若要将全部结果输出,可通过2>&1 把编号为2的输出结果定向到1的输出中。显然,管道在一条命令中可以使用多次。
三.如何管理系统输入
1.输入重定向 <
现在要将历史调用命令中的小写字母转换成大写字母,首先我们通过输出重定向将history中的数据定向到wesots中
然后,通过输入重定向将westos定向到 tr中进行转换
已完成要求。
也可通过管道进行 cat westos | tr ‘a-z’ ‘A-Z’ ,但相比较输入重定向会慢一些。
2.非交互式脚本
编写脚本 vim test.sh
发现,此脚本需要交互才能完成,退出后重新编辑,将需要交互的内容定向到passwd中即可。
再次运行脚本test.sh,已完成非交互式脚本编辑:修改用户密码。
test
在普通用户下执行命令完成以下操作:
1.查找/etc/下的passwd文件屏蔽错误输出
2.查找/etc/下的passwd文件正确输出保存到/tmp目录中的westos.out中,错误输出保存到/tmp/目录中的westos.err中
3.查找/etc/下的passwd文件保存所有输出到/tmp目录中的westos.all中并统计输入的行数
4.查找/etc/下的passwd文件统计输出行数并显示输出内容
5.转换/etc/目录中passwd文件中的所有字母为大写并统计文件行数
7.请用脚本非交互模式编写文件westos.file内容为:
hello linux
hello westos
hello linux
westos linux is very nice !!
总结
本章中,需要了解熟悉输入输出重定向,追加,管道的使用,通过test检验学习成果。