管理Linux中的输入输出
1.1 输入输出
输入
Stdio[标准输入流]
输入是指系统外接向系统中传递的信息
系统外接向系统传递数据的方式如下:键盘、鼠标、输入命令
输出
Stdout[标准正确输出]
在命令顺利完成后产生的字符串
stdout在Linux中的输出编号为1
Stderr[标准错误输出]
在命令失败执行完成后产生的字符串
stderr在Linux中的输出编号为2
字符设备
字符设备是指I/O传输过程中以字符为单位进行传输的设备,例如键盘,打印机等
字符设备是内存中开启的虚拟设备输出真实存在
1.2 重定向输出
重定向输出的方法
符号 | 用途 |
---|---|
> | 重定向正确输出 |
2> | 重定向错误输出 |
&> | 重定向所有输出 |
&> /dev/null | 将所有输出放到垃圾箱中(屏蔽所有输出) |
**注意:重定向会覆盖原文件内容
因此,如果想快速清空一个文件,则可使用命令“> 文件名”
因为该命令表示将一个没有任何输出的结果重定向到一个文件中,从而用一个空的内容将文件的原内容覆盖**
重定向相关命令
find /etc -name passwd #查找/etc目录下文件名为passwd的文件
find /etc/ -name passwd > westos.out #查找/etc目录下文件名为passwd的文件并将执行正确的放入
westos.out文件中
find /etc/ -name passwd 2> westos.err #查找/etc目录下文件名为passwd的文件并将执行错误的放入
westos.err文件中
find /etc/ -name passwd &> westos.all #查找/etc目录下文件名为passwd的文件并将执行的所有结果放入
westos.all文件中
1.3 追加
符号 | 用途 |
---|---|
>> | 追加正确输出 |
2>> | 追加错误输出 |
&>> | 追加所有输出 |
追加相关命令
find /etc/ -name passwd >> westos.out #查找/etc目录下文件名为passwd的文件并将执行正确的追加到
westos.out文件内容的后面
find /etc/ -name passwd 2>> westos.err #查找/etc目录下文件名为passwd的文件并将执行错误的追加到
westos.err文件内容的后面
find /etc/ -name passwd &>> westos.all #查找/etc目录下文件名为passwd的文件并将执行的所有结果追加到
westos.all文件内容的后面
1.4 管道
管道定义:把前一条输出变成后一条命令的输入,管道是用来组合多条命令的使用
管道的相关符号
| #管道符
2 >& 1 #将编号为2的输出转换为1,即把2里的内容放到1里
tee #复制输出到指定位置
管道相关命令的使用
ls /bin | wc -l
#统计/bin有多少文件
find /etc/ -name passwd | wc -l
#该命令表示将find /etc/ -name passwd的 正确输出作为wc -l 的输入,因为管道只
处理正确的内容,所以要想让管道符处理错误的内容,就需要将错误输出转换为正确的输出,
具体操作见命令2
find /etc/ -name passwd 2>&1 | wc -l
#该命令的作用是让管道能处理错误的输出,原理是将字符设备里所有错误部分的区域的内容
放到正确部分的区域
find /etc/ -name passwd 2>&1 | tee file | wc -l
#该命令的作用是将所有的输出先用tee命令复制一份,然后再通过第二个管道让wc命令来
处理,此时的输出有两份,file里面保存了一份,wc -l处理了一份,所以tee的作用是将
输出复制一份到指定的位置
1.5 输入重定向
输入重定向定义 :用符号从文件中获取输入
< #单个输入重定向
<< #多行录入,也即多行输入重定向
该实验需要用超级用户来做
因此首先要退出student用户,用命令gnome-session-quit --force退出,登陆root用户的时候需要用classic模式登陆
相关命令如下:
mandb
#该命令用来将帮助的信息更新到系统当中,让系统重新识别,该命令在将系统reset重置以后若系统还没有录入数据时使用,比如说输入whatis passwd时系统提示nothing appropriate时就需要我们输入该命令
passwd
#用来更改用户的认证信息,若在系统中输入passwd然后回车,系统会提示你输入新密码,然后再次确认新密码.但如果想在所有人的主机里都更新一次密码,可以写一个shell脚本的文件,使用命令vim file.sh开始编辑文件,文件里需要编辑的内容如图1,图中的 lee为密码,EFO为起始标识,"<<"为多行录入,也即多行输入重定向。
图一
tr 'a-z' 'A-Z' < westos.sh
#如图二,第一行的命令 “tr ‘a-z’ ‘A-Z’ westos.sh” 执行失败是因为 tr 这条命令看不到westos.sh文件中的内容,所以此时需要将westos.sh文件中的内容重定向到tr命令中,此时就需要用输入重定向符号 “<” 将westos.sh中的内容定向到 tr 的命令当中,使得 tr 命令能够看到westos.sh中的内容,然后执行命令才能成功把westos.sh中的小写转换为大写,当然也可以用管道实现同样的效果,命令为 cat westos.sh | tr ‘a-z’ ‘A-Z’
图二