输入输出的定义
1.Stdin[标准输入流]
输入是指系统外接向系统中传递的信息
2.stdout[标准正确输出]
在命令顺利执行完成后产生的字符串 ,stdout在Linux中的输出编号为1
3.stderr[标准错误输出]
在命令失败执行完成后产生的字符串 , stderr在Linux中的输出编号为2
一种输入方式
输入重定向是指用符号从文件中获取输入
1.单行输入
首先,编辑file文件(字母大小写均有)
根据文章下方介绍的管道知识,可以将file文件中的大写字母转为小写
还可以使用本小节介绍的输入重定向的方法进行转换
2.多行输入(EOF表示开始结束位置)
编辑westos.sh 完成后,使用 bash westos.sh 运行即可
两种输出方式
1.重定向输出
重定向是指将原本要输出到屏幕的数据信息,重新定向到指定的文件中。
而什么时候会用到重定向呢?
比如我们将正确信息和错误信息单独分开,实现将正确信息保存,错误信息进行丢弃,在日志记录方面很有用。同时在保存信息的过程中对屏幕的正常输出不进行干扰。
1.find /etc -name passwd > file.out #输出正确
2.find /etc -name passwd 2> file.err #输出错误
3.find /etc -name passed &> file.all #输出全部
注意:重定向会覆盖源文件
/proc/id/fd/0 存放输入数据
/proc/id/fd/1 存放正确输出数据
/proc/id/fd/2 存放错误输出数据
2.追加输出
1.find /etc -name passwd >> file.out #输出正确
2.find /etc -name passwd 2>> file.err #输出错误
3.find /etc -name passed &>> file.all #输出全部
注意:追加不会覆盖源文件,将内容追加到文件尾部
管道
管道可以将两个或多个命令连接到一起,把输出变成后一条命令的输入。
1.ls /bin | wc -l #不显示直接统计
2.find /etc -name passwd 2>&1 | wc -l #不显示错误输出并统计正确输出
3.find /etc -name passwd 2>&1 | tee file |wc -l #在2的基础上将信息保存到文件中
注意:tee的作用是即可将信息在屏幕上输出,又可以保存到文件中
接下来思考这一个问题:为什么要使用管道呢?
给出实例:
1.time ls /bin > file
real 0m0.0006s
user 0m0.0003s
sys 0m0.0002s
2.time wc -l file
real 0m0.0002s
user 0m0.0001s
sys 0m0.0000s
使用管道之后
time ls /bin | wc -l
real 0m0.0004s
user 0m0.0003s
sys 0m0.0002s
可以看到,使用管道之后速度快了一倍