IO:在 Linux 操作系统中指的是输入和输出 IO(input 输入、output 输出)
在 Linux 中的输入输出来源???
键盘称为标准的输入设备 ——> stdin 指的就是通过键盘和系统交互(读取)
显示器称为标准的输出设备 ——> stdout 指的就是通过显示器输出(写入)
标准的正确输出
标准的错误输出
IO 需要重定向:
所谓的重定向指的是将原本通过键盘或者显示器输入输出的方式,交给文件来进行处理
输出重定向(让原本应该输出在显示器上内容重定向):
> 标准的正确输出重定向
2> 标准的错误输出重定向
> + 2> = &> 全部输出重定向(包含正确和错误输出)
会有数据覆盖的问题 ???
> 会覆盖输出的内容
>> 表示在原有文件内容的基础上进行追加(也就是不会覆盖)
>> 正确输出追加 2>> 错误输出追加
写脚本的时候,注意用户的输出信息:
系统中的特殊设备:
/dev/zero 零字符(字节)将一个文件用零填满
/dev/null 空字符设备(垃圾桶、空文件、黑洞文件....)
在编写 shell 脚本时,会将脚本中的命令的错误输出信息或者是不想让用户看到的输出信息,丢到 null 文件中去(注意:所有丢到 null 这个文件中的内容是永久丢失的,是无法找回的)
输入重定向(将原本应该用过键盘输入的内容重定向为通过文件来进行读取):
passwd user00 < pass.txt 将用户的密码提前写入到文件中,通过文件来修改密码
passwd --stdin root 通过 stdin 设备传递给 passwd 作为输入
" | " 管道符:
command1 | command2 | command3
管道的作用:管道是命令的链接符号,管道将上一条命令的输出作为下一条命令的输入(一般是作为参数)
管道的约束:只有正确的输出可以通过管道,错误的输出是不能通过管道的
" |tee " 三通管道
tee 可以将内容同时输出到显示器和文件中
使用场景:一般用在故障诊断,将故障显示在屏幕上时同时记录到文件,或则在日志中使用时,输出到文件和屏幕
在 shell 脚本中,生产配置文件的用法:
通过输入输出重定向来生成文件
cat >> /opt/info.txt << EOF(以某个字符开头必须以这个字符结尾,可以是其他大写的字符串)
hello
test
redhat
EOF