1.理解系统的输入输出
系统的输入:通过我们的键盘、鼠标和其他硬件在系统中录入字符;
系统的输出:在接受我们输入后经过cpu处理后的反馈给我们的字符;
输出有两种,编号为1的正确输出和编号为2的错误输出,这两种输出都会被系统默认定向到字符设备中。
2.管理输入输出符号
1)输出重定向
> ##重定向正确输出
2> ##重定向错误输出
&> ##重定向所有输出
注意:重定向会覆盖原来的内容
e.g.以student身份查找/etc/下的名字为passwd的文件
a.切换用户
b.查找/etc/下文件名为passwd的文件
find /etc/ -name passwd ##查找/etc/下文件名为passwd的文件
结果:
c.重定向正确输出到file
find /etc/ -name passwd > file ##重定向正确输出到file
结果:
文件内容:
d.重定向错误输出到file.err
find /etc/ -name passwd 2> file.err ##重定向错误输出到file.err
结果:
文件内容:
e.重定向所有输出到file.all
find /etc/ -name passwd &> file.all ##重定向所有输出到file.all
结果:
文件内容:
f.重定向正确的输出到file.err,观察是否覆盖原来的内容
find /etc/ -name passwd > file.err ##重定向正确的输出到file.err
结果file.err中的内容被覆盖:
2)输出追加
>> ##追加正确输出到文件最后
2>> ##追加错误输出到文件最后
&>> ##追加所有输出到文件最后
注意:追加不会覆盖原文件的内容
e.g.
a.追加上面查找的错误结果到file的最后
原文件内容:
输出结果:
追加后文件内容:
b.追加上面查找的正确结果到file.err的最后
原文件内容:
输出结果:
追加后文件内容:
c.追加 “hello 123”到file.all的最后
原文件内容:
输出结果:
追加后文件内容:
3)输入重定向
是指不使用系统提供的标准输入端口,而进行重新的指定。换言之,输入重定向就是不使用标准输入端口输入文件,而是使用指定的文件作为标准输入设备。
<< 从标准输入中读入内容,直到遇到“标识符”分解符为止
e.g.
a.新建一个文件名为readme.txt,并且给它可执行权限
b.编辑readme.txt,内容如图所示:
c.执行上面的文件:
3.管道符
| ##管道符,把管道符的前的命令输出变为后面命令的输入
注意:1)管道只允许正确输出通过
2)如果需要将前面的命令输出到文件并且再进入下一条命令作为输入可以用tee
e.g.
在/mnt目录下新建子目录test,在子目录下新建5个新文件,把文件名输出到/mnt下的文件filename中,并统计文件的个数
a.新建目录和文件
b.通过管道符和tee指令将test下的文件名保存到文件filename中,并统计文件个数
为了让错误信息也能够通过管道符,我们可以把编号为2的错误信息转换为编号为1的信息,然后通过管道符
e.g.
a.find /etc/ -name passwd | wc -l ##统计etc下passwd文件的个数
个数为2说明只通过了正确信息,错误信息显示在了字符设备中
b.find /etc/ -name passwd 2>&1| wc -l ##统计etc下passwd文件的个数
将错误信息的编号由2变为1后,全部通过管道符。