linux 输入输出管理

输入输出的定义

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

可以看到,使用管道之后速度快了一倍

发布了11 篇原创文章 · 获赞 1 · 访问量 243

猜你喜欢

转载自blog.csdn.net/weixin_41708548/article/details/103838253