温故Linux 操作系统06:输入输出管理

1.理解系统输入输出

我们先来看一张图:
在这里插入图片描述
在Linux系统中,正确输出的编号为1,错误输出编号为2
在上图中,我们称编号0为标准输入,也就是键盘的收入,编号1为标准输出,也就是正确打印在屏幕上的我们可以看到的信息,编号3为标准错误,也就是运行的时候出现error时候的错误信息
shell程序中的指令------>cpu产生运算结果------->字符设备
在shell程序中输入指令,送到cpu中运算产生的结果,再送到字符设备中显示。

2. 管理输入输出

2.1 输出重定向

在学习和工作中我们经常需要在执行命令之后输出信息到文件里来方便我们查看,这时候就需要“重定向”操作
重定向,也就是重新定向输出,命令如下:

1>							##重定向正确输出,此处的1可以省略
2>							##重定向错误输出
&>							##重定向所有输出
2>&1 						##把错误的输出编号由2变成1,效果同&>
例如:
date > date_ok.txt			##date的正确输出重定向到date_ok.txt文件里

在这里插入图片描述
在这里插入图片描述
但是重定向会覆盖源文件内容,所以当我们需要继续写入数据的时候需要输出追加
输出追加只需要把重定向的>符号改为>>即可:
在这里插入图片描述
在这里插入图片描述

2.2 管道

| 管道,管道的作用是将前一条命令的输出变成管道后命令的输入
在这里插入图片描述
管道只允许正确的输入,通过管道的输出将会变成输入,而变成输入的这些输出是会被第二条命令处理的
** 下面操作涉及到的find命令:

find 路径 -name “字符”				##查找名字为“”的文件
find 路径 -type [f/d]				##按照类型进行查找
find 路径 -size +1M					##大于1M
find 路径 -size -1M					##小于1M
find 路径 -maxdepth 1 -size +1M		##当前目录大于1M
find 路径 -maxdepth 2 -size +1M		##当前目录和一级子目录大于1M

下面我们测试一下,首先切换到普通用户下使用find命令find /etc -name passwd来寻找/etc目录下的passwd文件,由于权限的原因,很多目录是没有权限搜索的,此时会报错然后返回权限限制的标准错误,然后只搜寻到两条含有passwd文件,此时会打印如下信息:
在这里插入图片描述
如果我们想统计列出的正确信息有多少条,那么我们就可以选择使用管道,由于管道的只允许正确输入的特点,我们可以在管道上用wc -l命令来统计正确输出个数:
在这里插入图片描述
我们可以看到不仅返回了错误信息,还返回了正确输出个数两个。

2.3 tee

tee 命令为复制输出到指定位置
原理如下:
在这里插入图片描述
tee意思就如同我们在管道上添加一个类似重定向的装置,把前一个进程的输出重定向之后在进行管道的输入操作。
在这里插入图片描述
由上图我们可以看到,2>&1操作把错误的输出变为了正确的输出, tee操作之后把输出重定向到了file文件中,而管道的wc -l 操作把所有的输出个数都统计了出来,为19。

2.4 输入重定向

<								##输入的重定向
tr ‘a-z’ ‘A-Z’ < filename			## 文件输入的小写内容变成大写
tr ‘A-Z’ ‘a-z’ < filename			## 文件输入的大写内容变成小写
cat > filename <<EOF —hello world! hello world!EOF
								# 格式化输入内容到文件,注意①EOF可以换成其他字符串
								②修改密码需要重复两次命令

如果输入重定向的<改为<< ,效果见输出重定向

发布了39 篇原创文章 · 获赞 4 · 访问量 727

猜你喜欢

转载自blog.csdn.net/weixin_44718794/article/details/102751520
今日推荐