IO重定向

IO 重定向

IO重定向整体分为:
1输出重定向
2输入重定向

为什么要用重定向?
有些时候我们在运行某些程序的时候有些垃圾数据会显示在终端窗口,还有些比较私密的信息我们不希望让其他人看见,这时候我们可以将这些数据丢弃到/dev/null或者指定的文件中进行保存

当进程操作一个文件时:
1首先进程是没法直接访问硬件,需要借助内核来访问文件
2而内核kernel需要借助文件描述符(file descriptor)来访问文件

总结:进程—>文件描述符—>访问文件

举例:
第一步:运行tail -f /etc/passwd
第二部: 通过文件描述符–>/etc/passwd—>inode—>block
第三部:正确输出—>默认情况下通过文件描述符1—>当前终端窗口 1>(改变输出位置,文件,黑洞)
第四部:错误输出–>默认情况下通过文件描述符2–>输出到当前终端 2>(改变输出的位置 )

通常访问一个文件至少会打开三个标准输出文件,分别是,标准输出.标准输入,错误输出
进程将标准输出中得到的数据打印到终端

在这里插入图片描述
在这里插入图片描述

输出重定向的一些格式

在这里插入图片描述
案例 1:

[root@localhost ~]# >edu.txt
[root@localhost ~]# ifconfig  ens32  |  grep  'inet ' >edu.txt 
[root@localhost ~]# cat edu.txt 
        inet 10.0.0.98  netmask 255.255.255.0  broadcast 10.0.0.255

标准输出追加:

[root@localhost ~]# echo  'IPADDR'  >> edu.txt ;cat edu.txt 
        inet 10.0.0.98  netmask 255.255.255.0  broadcast 10.0.0.255
IPADDR

标准错误输出

[root@localhost ~]# ls  /etc  -iname   '*.conf' 1>complete.log 2>error.log
[root@localhost ~]# cat   error.log 
ls: invalid option -- 'e'
Try 'ls --help' for more information.

混合重定向

1将正确和错误的信息输出到同一个文件中
2将两个文件内容组合成一个文件

[root@localhost ~]# find  /etc  -name   '*.conf'  &>all.log  ; wc -l all.log 
109 all.log

正确和错误的信息都输入到相同的位置

[root@localhost ~]# ls  /root/   1>all.log   2>&1  
[root@localhost ~]# wc  -l  all.log  
29 all.log

将内容输出到黑洞

例一

[root@localhost ~]# echo  '199688'  |  passwd  --stdin  &>/dev/null 

例二

[root@localhost ~]# wc -l  all.log 
29 all.log
[root@localhost ~]# cat  all.log  &>/dev/null 
[root@localhost ~]# 

输入重定向

输入重定向:指的是’重新指定设备’来代替键盘作为新的输入设备

[root@localhost ~]# cat >  all.log  <<EOF
> xiaoming  12   xuesheng 
> xiaomei   13   banhua
> xiaohong  15   banzahng 
> EOF
[root@localhost ~]# cat >  all.log  <<EOF
> xiaoming  12   xuesheng 
> xiaomei   13   banhua
> xiaohong  15   banzahng 
> EOF

经常应用于脚本作为菜单窗口在这里插入图片描述

[root@localhost ~]# vim  packege.sh
[root@localhost ~]# bash packege.sh 
	(1)login ID:
	(2)passwrod:
	(3)forget  password:
	(4)exit
please  input  you need  code [1|2|3]:1
[root@localhost ~]# 

总结:
输入重定向一般常用的环境:
1输出重定向也经常应用于恢复数据
2cat写入文件
3vim 编辑脚本的菜单窗口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值