文件输入输出的管理

####1.输入输出的定义###### 

#1.输入

就是我们的键盘,鼠标和我们用这些硬件在系统逐个录入的字符

#2.输入

就是系统接收到我们想要实现的功能字符后,经过进程的处理产生字符

输入会有两种出现

编号1为正确输出

编号2为错误输出

默认这两种输出都会被系统定向到字符设备中

### 2.如何管理输出 ################

#1.交互式多行录入

交互式多行录入,利用”.sh“文件。

## ”.sh“文件是 UNIX/LINUX 操作系统的脚本文件,”sh“是Linux,unix的命令,其用途为调用缺省的shell。

     下面举例进行说明,利用“.sh”文件来修改用户密码。首先用命令“ vim C_pass.sh”创建一个“.sh”文件,并输入"passwd"。再使用命令“sh C-pass.sh"调用文件中"passwd"的命令,则进入到修改密码的命令中。



<2>非交互式录入

vim  C_pass.sh

passwd <<END

lee

lee

END

sh C_pass.sh

但其是不能自动运行的,仍然需要手动输入密码,若直接将密码加入到".sh"文件中则可直接修改成功,

可以自动运行避免交互,密码修改完成,其中”END"用来规定起始,也可用其他字符代替,但首尾必须一致。


#2.如何管理输出

#重定向

> #重定向正确输出

2> #重定向错误输出

&> #重定向所有输出

2>&1 #把错误输出的编号由2转换为1

##请用student用户做以下实验

find /etc/ -name passwd  > file.out

find /etc/ -name passwd 2> file.out

find /etc/ -name passwd &> file.all

"注意:从定向是会覆盖原文件内容的!!!"

vim westos

hello westos

find /etc/ -name passwd  > westos

cat westos ##原文件内容不见了

 如在student用户中执行命令,在/etc/目录下寻找名为“passwd”的文件。

查看所有输出:


我们可以看到当输入命令后,对应有2条正确的输出---“/etc/passwd"和"/etc/pam.d/passwd"。

 及对应的17条错误输出。那么我们如何选择性的输出我们需要的输出呢,以及输出我们需要统计的输出行数呢,我们需要注意的是重定向输出我们需要的结果,而把不需要的结果保存到一个文件中,并且文件原内容会被覆盖。

查看错误输出:


将错误结果在终端输出,将正确结果放到文件file.sight中。

再将所有输出结果重定向到”file.all“文件中,输入命令”find  /etc/  -name  passwd  &> file.all“


###追加

#保持原文件内容不变的情况下把输出追加到文件之后

>> ##追加正确输出

2>> ##追加错误输出

&>> ##追加所有输出

 eg:

find  /etc/ -name passwd >> westos       #将正确输出放到westos中,原westos内容不会覆盖

find  /etc -name passwd 2>> westos         #将错误输出放到westos中,原westos内容不会覆盖

find  /etc -name passwd &>> westos        #将所有输出放到westos中,原westos内容不会覆盖

 

原文件内容“hello world”依然存在,只不过是将正确输出追加进来而已。

######3.管道##############

#把输出变成下一个程序的输入

#管道是用来组合多条命令的使用的

ls /bin | wc -l

“-----查看”/bin/目录下文件,并将其行数统计出来输出,本来的输出应该是目录下的文件,而在使用管道后将文件变为“wc -l”的输入,再输出行数。

 

"注意:通过管道后输出会变成输入,那么是无法保存在文件中的"

tee ##复制输出到指定位置

ls /bin | tee file | wc -l

cat file ##file中已经保存了输出

查看”/bin/目录下文件,并将其文件内容复制到file中,再将其行数统计出来输出。

 


猜你喜欢

转载自blog.csdn.net/chao199512/article/details/79900455