标准的IO重定向和管道

目录

IO重定向

管道的使用和拓展


IO重定向

在该章节开始之前,先要了解我们的命令模式下的输入和输出分为哪几种:

        ·输入:标准输入stdin

标准输入stdin:默认来自己键盘;也可来自于文件;也可来自于管道。

        ·输出:标准输出stdout

                     标准错误输出stderr

了解了输入和输出后我们再来看输入重定向、输出重定向的语法

输入重定向

输入重定向一般很少用,通常都是来自于键盘

但是有一个符号可以是输入来自于文件,<小于号可以实现该用法,这里先了解,后续和read连用的时候再说

主要学习一下来自管道的输入  “|”

要注意下,不是所有的输入都可以来自于管道

       · 管道一般用来处理字符串或者文本
        ·错误的输出不可以经过管道
        ·经过管道处理的文本,不在输出到当前终端,没有经过管道的内容依旧在终端显示
        ·如果重定向后的内容,不会经过管道

例:可以将管道前面的输出当做后面的输入,然后在进行grep命令

 还有一种管道叫三通管道,tee命令,为什么叫三通管道?因为正常的管道只能看到结果,不能看到处理过程,而tee命令可以再管道与管道之间在添加一个通道,举个简单例子:

 

输出重定向

> :大于号属于输出重定向的一种,格式command > filename;注:command要有输出,不然没有意义,例:

ll查看目录下的详细信息,该结果已经重定向到1.txt文件当中,但要注意的是,>重定向如果接的目标文件已存在,则代表覆盖的意思,慎用!!!

>> :两个大于号连用也是输出重定向的一种,格式command >> filename,例:

可以看到,已经将ls输出的结果重定向到了1.txt里面去

 注:这里要看一下,>和>>的区别,相同点是对未存在的文件进行创建后重定向到文件里,不同点是,对于已存在文件,>代表覆盖,>>代表追加

对于一个命令而言,命令结果的输出有正确的输出,同样也有错误的输出,上述都是对正确的输出进行重定向,那如何对错误的输出进行重定向,不显示在终端上呢?

格式:command 2> filename

可以看到这个l,是一个不存在的命令,是有错误输出的,那可以使用2> 进行错误输出重定向将之不显示,同样这里也可以使用>>追加到文件当中;

同样还有一种用法是 command 1> filename,这里面的1代表的标准输出重定向(正确的输出),其实和上面刚刚说的>\>>是一个意思,只不过默认会省略这个1;

在正常的项目当中,常用的重定向类似于下面的方法:

[root@rhce ~]# ll > /dev/null
[root@rhce ~]# ll &> /dev/null        &这里代表所有,指将所有的输出都重定向到/dev/null
[root@rhce ~]# ll 1> /dev/null
[root@rhce ~]# l 2> /dev/null

为什么使用这个文件呢?

不难看出它是一个字符文件 ,此类文件不可以存储数据,当重定向到此类文件时,会有同丢入垃圾箱一样的效果,永远不会满

 另外,如果想把错误的输出转变成和正确输出一样,重定向到目标文件当中

我们还可以这样实现:2>&1                        ----------标识将错误的输出转成正确的输出

可以看到,加上2>&1可以将错误的输出重定向,终端不显示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值