linux系统---------文件输入输出的管理
文件输入输出的管理
1.1输入输出的定义
1.1.1 输入 :就是我们的键盘,鼠标和我们用这些硬件在系统只哦个录入的字符。
1.1.2 输出 :就是系统接收到我们想要实现的功能字符后,经过进程的处理产生字符。
1.1.3 输入会有两种结果:(1) 编号为“1”的正确输出。
(2) 编号为“2”的错误 输出。
#默认着两种输出都会被系统定向到字符设备中。
如在student用户中执行命令,在/etc/目录下寻找名为“passwd”的文件。
我们可以看到当输入命令后,对应有两条正确的输出---“/etc/passwd"和"/etc/pam.d/passwd"。
及对应的其他错误输出。
1.2 “.sh”脚本管理输出
1.2.1 非交互式多行录入,利用”.sh“文件。
## ”.sh“文件是 UNIX/LINUX 操作系统的脚本文件,”sh“是Linux,unix的命令,其用途为调用缺省的shell。
下面举例进行说明,利用“.sh”文件来修改用户密码。首先用命令“ vim C_pass.sh”创建一个“.sh”文件,并输入"passwd"。
再使用命令“sh C-pass.sh"调用文件中"passwd"的命令,则进入到修改密码的命令中。
但其是不能自动运行的,仍然需要手动输入密码,若直接将密码加入到".sh"文件中则可直接修改成功,命令如下
passwd <<END
lee
lee
END
sh C_pass.sh
可以自动运行避免交互,密码修改完成,其中”END"用来规定起始,也可用其他字符代替,但首尾必须一致。
下面举例使用".sh"脚本输出“hello”并输入到“file”文件中。
1.3 如何管理输出
上面我们提到输出有编号为“1”的正确输出,和编号为“2”的错误输出,下面介绍“ 重定向输出 ”,将输出可重新定义方向输出。
> #重定向正确输出
2> #重定向错误输出
&> #重定向所有输出
2>&1 #把错误输出的编号由2转换为1
以上面在student用户中执行命令,在/etc/目录下寻找名为“passwd”的文件为例,将输出正确的结果重定向到“file.right"文件中。输入命令”find /etc/ -name passwd > file.right"。
再将输出错误的结果重定向到“file.error"文件中。输入命令”find /etc/ -name passwd 2> file.error“。
再将所有输出结果重定向到”file.all“文件中,输入命令”find /etc/ -name passwd &> file.all“
###"注意:重定向是会覆盖原文件内容的!!!"###
如 输入命令”vim westos“,输入内容,再将所有输出重定向到”westos“中,原文件被覆盖。
##追加,保持原文件内容不变的情况下把输出追加到文件之后
>> ##追加正确输出
2>> ##追加错误输出
&>> ##追加所有输出
1.4 ”管道“管理输出
管道:(1) 把输出变成下一个程序的输入
(2) 管道是用来组合多条命令的使用的
如输入命令” ls /bin | wc -l“-----查看”/bin/目录下文件,并将其行数统计出来输出,本来的输出应该是目录下的文件,而在使用管道后将文件变为“wc -l”的输入,再输出行数。
###注意:通过管道后输出会变成输入,那么是无法保存在文件中的###
###使用 “ tee ” , 可将复制输出到指定位置。###
执行命令“ls /bin | tee file | wc -l”,在执行“cat file ”,可以看到file中已经保存了输出。
1.5 练习
1.显示当前时间 , 显示格式为 hh:mm:ss, 并保存到文件 time.txt文件中
2.显示 /etc/passwd 文件的第 15-18 行内容
3.显示 /bin 中文件包含大写字母的文件 , 保存到bin_westos_file.txt 文件中,并统计个数显示到屏幕
4.在 student 用户下查找 /etc 下 passwd 文件,屏蔽错误输出
5.在 student 用户下查找 /etc 下 passwd 文件,正确输出保存到 /tmp/westos.out 错误输出保存到 /tmp/westos.err
6.在 student 用户下查找 /etc 下 passwd 文件,显示命令输出并保存输出到 /tmp/westos.all 中
具体操作如下:
先显示文件的前18行
再通过管道将刚刚输出变为输入,显示后4行。
第三题输入如下图所示
第4.5.6题如下图所示