基于Linux下的输入输出管理

输入输出的定义:

1.输入就是我们的键盘,鼠标和我们用这些硬件在系统只录入的字符。

2.输出就是系统接收到我们想要实现的功能字符后,经过进程的处理产生字符。输出会有两种形式出现:编号1为正确输出,编号2为错误输出,默认着两种输出都会被系统定向到字符设备中。

2.非交互式多行录入

vim C_pass.sh

passwd

sh C_pass.sh

这样调用的时候需要交互式更改密码。

在我们调用sh命令是不能自动运行的,需要借助<<输入重定向符号进行重定向。如下所示:

passwd <<END

lee

lee

END

调用sh C_pass.sh修改密码为lee,是可以自动运行避免交互。

我们可以看下图,我们先使用vim命令进入编辑界面,然后用<<输入重定向符号进行编写,只要保证首尾一致即可。不是必须用我所用到的EOF。最后用sh命令调用即可更改密码,密码为lee.

如何管理输出:

重定向,我们都是用/etc/passwd来呈现效果:

> 重定向正确输出

2> 重定向错误输出

&> 重定向所有输出

2>&1 把错误输出的编号由2转换为1,进而可以通过管道,图片还加了tee命令将通过管道的内容复制到了aaa里面。

请用student用户做以下实验:

find /etc/ -name passwd  > file.out   正确的输出

  这个命令就相当于将正确的命令重定向到file.out中,我们用cat来查看文件内容如图所示,这都是在student用户下进行每一步骤的。

find /etc/ -name passwd 2> file.out   错误的输出

  同样是把错误的内容重定向到file.out中,我们可以用cat查看效果。我们每次敲完代码不是不提示错误就是做对了,我们要学会用眼睛来看到我们自己的操作是正确的,养成良好的习惯。

find /etc/ -name passwd &> file.all   全部输出

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

vim westos

hello westos

find /etc/ -name passwd  > westos

cat westos 原文件内容不见了,只剩下重定向的正确的内容

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

>>      追加正确输出

2>>     追加错误输出

&>>     追加所有输出

find /etc/ -name passwd >> xfl

  一开始我在xfl文件中编辑了hello然后使用追加正确输出命令,用cat查看文件内容时hello并没有丢失,可见追加是保持原内容不变的前提下追加新内容。

find /etc -name passwd 2>> xfl

使用命令之后,可以看到hello还是在的,这就是追加的呈现。

find /etc -name passwd &>> test

 管道命令:

管道就是把输出变成下一个程序的输入,管道是用来组合多条命令的使用的。顾名思义就是一个过滤器一样,我们可以使用这个命令来控制正确还是错误的来通过管道。

ls /bin | wc -l

"注意:通过管道后输出会变成输入,那么是无法保存在文件中的"。如上图所示,命令只会呈现结果而不会保存。

tee 复制输出到指定位置,ls /bin | tee file | wc -l

cat file file中已经保存了输出,也就是有了两份内容。

练习:

1.显示当前时间 , 显示格式为 hh:mm:ss, 并保存到文件 time.txt文件中

date +%H:%M:&S | tee time.txt

我们可以看到tee命令的呈现,也就是通过管道来复制时间到time.txt。

2.显示 /etc/passwd 文件的第 15-18 行内容,当我们不会使用命令时学会用--help命令来查看命令的操作。

cat -b /etc/passwd | head -n 18 | tail -n 4

3.显示 /bin 中文件包含大写字母的文件 , 保存到bin_westos_file.txt 文件中,并统计个数显示到屏幕。

touch bin_westos_file.txt

ls /bin/*[[:upper:]]* | tee bin_westos_file.txt | wc -l

4.在 student 用户下查找 /etc 下 passwd 文件,屏蔽错误输出

find /etc/ -name passwd 2> /dev/null

我们要学会使用/dev/null,也就是系统垃圾箱,我们可以将没用的东西放进去。

5.在 student 用户下查找 /etc 下 passwd 文件,正确输出保存到 /tmp/westos.out 错误输出保存到 /tmp/westos.err,这题就是用两个重定向就OK了,然后用cat查看一下效果。

find /etc/ -name passwd 2> /tmp/westos.err > /tmp/westos.out

6.在 student 用户下查找 /etc 下 passwd 文件,显示命令输出并保存输出到 /tmp/westos.all 中。就是通过2>&1 把错误输出的编号由2转换为1,进而可以通过管道,然后复制一份到/tmp/westos.all。

find /etc/ -name passwd 2>&1 | tee /tmp/westos.all

猜你喜欢

转载自blog.csdn.net/aaaaaab_/article/details/79719691
今日推荐