系统中的输入输出管理
1.理解系统中的输入输出
shell中的指令----->cpu产生运算结果----->字符设备(默认/dev/pst)
输入输出系统是计算机系统中的主机与外部进行通信的系统。它由外围设备和输入输出控制系统两部分组成,我们在shell中键入指令,然后送入CPU中运算产生结果,再将结果送到字符设备中显示。
2.管理输入输出的符号
1).输出重定向
输出重定向:改变程序运行的输入来源和输出地点
主要有下述使用方法:
输出重定向 | |
---|---|
类型 | 符号 |
1> | 重定向正确输出-----1一般省略 |
2> | 重定向错误输出 |
&> | 重定向所有输出 |
注意:
重定向会覆盖原文件内容
以下实验必须在非root用户下完成
实验:
find /etc/ -name passwd
上述命令行是指在目录/etc中寻找名字中含passwd的文件
注意:上图中显示的输出仅有以下两个正确输出
/etc/passwd
/etc/pam.d/passwd
现在我们用以下命令进行输出重定向
find /etc/ -name passwd > file
##定向正确输出到file
再查看文件法file的内容
find /etc/ -name passwd 2> file1
##定向错误输出到file1
find /etc/ -name passwd &> file2
##定向所有输出到file2
分别查看文件file1和文件file2的内容
> file ##清空file
2).输出追加
>> ##追加正确输出到文件最后
2>> ##追加错误输出到文件最后
&>> ##追加所有输出到文件最后
注意:
追加不会覆盖原文件内容
实验:
首先我们建立一个文件file,在文件里写入“hello,world ,westos“
我们先使用输出重定向将正确输出放到文件file中观察变化
然后再使用输出追加命令将输出放到文件file中观察变化
由下图可见,=输出重定向会覆盖原文件内容
先将file文件内容恢复“hello,world,westos”,现在使用输出追加命令再次查看文件内容,可见原文件内容没有被覆盖。
/dev/null ##系统垃圾箱
3)管道符
符号为
|
作用:可以使多条命令同时执行(将前一条命令的正确输出作为管道符后面命令的标准输出)
例:显示/etcpasswd文件的第13-16行内容
注意:
错误输出不能被管道符处理(如上个实验中fand /etc/ -name passwd命令中的错误信息)
例: find /etc/ -name passwd | tee file—>该条命令是指将管道符前面命令产生的输出复制一份保存到文件file中(事先已将文件file中的内容清空),我们观察结果可得错误输出并没有复制到文件file中,而是被管道符拦截下来。
错误输出编号为1,若想要用管道符处理错误信息,用 2>&1 将错误信息编号转变为1。
4)输入重定向
输入重定向:是指不使用系统提供的标准输入端口,而进行重新的指定。换言之,输入重定向就是不使用标准输入端口输入文件,而是使用指定的文件作为标准输入设备。
输入重定向 | |
---|---|
语法 | 功能 |
命令<文件1 | 命令把文件1的内容作为标准输入设备 |
命令<<标示符 | 命令把标准输入中读入内容,直到遇到“标示符“分解符为止 |
命令<文件1>文件2 | 命令把文件1的内容作为标准输入,把文件2作为标准输出 |
例:
图中 # cat <<ha(这个字符串是任意的,没有任何含义),它的作用是把两个标示符“ha”之间的内容作为标准输入传递给cat