1.输入输出的定义
输入:用键盘,鼠标等硬件在系统逐个录入的字符
输出:系统接收到我们想要实现的功能字符后,经过进程的处理产生字符
注:输出会有两种结果,编号1为正确输出,编号2为错误输出,输出结果会被系统默认定向到字符设备中
2.管理输入
(1)交互式录入
举例:(改root用户密码)
[root@desktop Desktop]# vim passwd.sh # 编辑该密码的脚本文件
#!/bin/bash
passwd
[root@desktop Desktop]# sh passwd.sh # 该脚本需要手动运行
Changing password for user root.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
(2)非交互式录入
[root@desktop Desktop]# vim C_pass.sh
#!/bin/bash
passwd <<END
redhat
redhat
END
[root@desktop Desktop]# sh C_pass.sh # 可以自动运行避免交互
Changing password for user root.
New password: BAD PASSWORD: The password is shorter than 8 characters
Retype new password: passwd: all authentication tokens updated successfully.
3.管理输出
(1)重定向
> # 重定向正确输出
2> # 重定向错误输出
&> # 重定向所有输出
2>&1 # 把错误输出的编号由2转换为1
- 注:请用student用户做以下实验
[root@desktop ~]# su - student
[student@desktop ~]$ find /etc/ -name passwd > file.in #显示错误信息,正确信息写入文件
[student@desktop ~]$ cat file.in
[student@desktop ~]$ find /etc/ -name passwd 2> file.err # 显示正确信息,错误信息录入文件
[student@desktop ~]$ cat file.err
[student@desktop ~]$ find /etc/ -name passwd &> file.all # 所有信息录入文件
[student@desktop ~]$ cat file.all
[student@desktop ~]$ find /etc/ -name passwd > file 2>&1 # 所有信息录入文件
[student@desktop ~]$ cat file
注:重定向是会覆盖原文件内容的
[root@desktop Desktop]# vim file1
hello world
[root@desktop Desktop]# find /etc/ -name passwd > file1 # 用passwd里的东西覆盖file1的东西
[root@desktop Desktop]# cat file1 # 原文件内容被passwd里的内容覆盖
(2)追加(保持原文件内容不变的情况下把输出追加到文件之后)
>> # 追加正确输出
2>> # 追加错误输出
&>> # 追加所有输出
[root@desktop Desktop]# vim file
hello world
[root@desktop Desktop]# find /etc/ -name passwd >> file
[root@desktop Desktop]# cat file
[root@desktop Desktop]# find /etc -name passwd 2>> file # 追加错误信息的到file文件里
/etc/passwd
/etc/pam.d/passwd
[root@desktop Desktop]# find /etc -name passwd &>> file # 追加所有信息到file文件里
[root@desktop Desktop]# cat westos
(3)管道 ‘|’ (把输出变成下一个程序的输入,只有编号为1的输出可通过管道)
使用方法:组合多条命令的使用
[root@desktop Desktop]# ls /bin | wc -l # 统计/bin下有多少个目录,输出在终端上
1614
注:通过管道后输出会变成输入,但是无法保存在文件中的
- tee (复制输出到指定位置,即实现了把通过管道的文件保存起来)
[root@desktop Desktop]# ls /bin | tee file | wc -l # 把查看到的保存在file文件中
1614
[root@desktop Desktop]# cat file