三、管理Linux的输入输出

管理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’

图二
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值