1.理解系统的输入输出
例:当在一个shell中输入相应的命令时,该命令会传输到cpu中,当cpu对该命令进行相应的处理后,就通过字符设备显示到屏幕上。
2.管道输入输出的符号
###输出重定向####
> ##重定向正确输出
2> ##重定向错误输出
&> ##重定向所有输
注意:重定向会覆盖源文件的内容
示例:
注意:以下示列必须在student下完成
find /etc/ -name passwd > file ###定向正确输出到file
find /etc/ -name passwd 2 > file.err ###定向错误输出到file.err
find /etc/ -name passwd &> file.all ###定向所有输出到file.all
#####输出追加#####
(1) >> ###追加正确输出到文件最后
(2) 2>> ###追加错误输出到文件最后
(3) &>> ###追加所有输出到文件最后
注意:追加的内容不会覆盖源文件的内容
示例:
find /etc/ -name passwd >> file ###追加正确输出到file
find /etc/ -name passwd 2> > file.err ###追加错误输出到file.err
find /etc/ -name passwd &>> file.all ###追加所有输出到file.all
3.管道的应用
###管道的作用####
符号:“ | “ 管道的作用是把前一条命令的输出变成后一条命令的输入
必须注意的是:
管道只允许正确输出通过
通过管道的输入将会变成输入,而变成输入的这些输出是会被第二条命令处理的
如果需要保存输出内容,那么需要复制一份输出,用到的命令是“tee“
##管道符号| 的作用
[student@localhost ~]$ touch file{1…3}
[student@localhost ~]$ ls //如ls显示的文件多的话根本数不过来
file file1 file2 file3 file.all file.err
[student@localhost ~]$ ls | wc -l 通过管道将ls的输出送到显示wc -l 的输入然后就会统计出文件个数
6
[student@localhost ~]$ ls | tee file8 |wc -l //用tee将管道的输出复制一份到file8中
6
[student@localhost ~]$ cat file8 //显示除了所有的文件
file
file1
file2
file3
file.all
此实验在普通用户下操作:
find /etc/ -name passwd | wc -l ###会看到的结果为2,因为错误输出不能通过管道
find /etc/ -name passwd 2>&1 | wc -l ###会看到19,因为编号为2的输出被“2>&1"转换为编号1
4.输入重定向
echo hello world > file ###将输入的内容定向在file里
举例:在root下如果对student该密码则需要输入密码,但是如果要对多个用户修改密码其一次又一次的输入密码很麻烦,解决的方法如下:
(1)先建立一个文件,并且编辑如下内容
(2)查看这个文件的权限并对这个文件赋予执行的权利
(3)当直接执行这个文件时会发现不用直接输入密码密码就可修改成功
例:
课堂练习题
(1)
(2)
(3)
(4)
(5)