Linux系统重定向和管道

1、标准输入和标准输出

 

           程序:指令+数据

                  读入数据:input

                  输出数据:output

 

    Linux给程序提供了三种I/0设备:

         

         标准输入(stdin—0 默认接受来自键盘的输入;

         标准输出(stdout–1 默认输出到终端窗口;

         标准错误(stderr—2 默认输出到终端窗口;

 

    I/O重定向:改变默认位置;

 

         Stdoutstderr可以被重定向到文件:

    

             命令   操作符号   文件名

 

                > stdout重定向到文件,会覆盖原有文件;

                >>stdout重定向到文件,在原有文件上追加,不覆盖;

                2>stderr重定向到文件,会覆盖原有文件;

                2>>stderr重定向到文件,在原有文件上追加,不覆盖;

                &> 2>&1)把正确输出和错误输出都重定向到文件,会覆盖原有文件;

                &>> 2>>&1)把正确输出和错误输出都追加重定向到文件,不覆盖原有文件;

                ():合并多个程序的stdout   

                         例:(cal 2007;cal 2008> all.txt

 

             为了防止重定向误覆盖原有文件,可以使用set 命令禁止将内容覆盖:

              

              set  -c :禁止重定向内容覆盖已有文件,但可追加;

                       强制覆盖使用  >|

              set  -c:解除重定向覆盖原有文件,允许覆盖;

 

2、tr命令:

 

           tr [OPTION]… SET1 [SET2]

                -c:取字符集的补集;

                -d–delete:删除所有属于第一字符集的字符;

                -s:把连续重复的字符以单独一个字符表示;

                -t–truncate-set1:将第一个字符集对应的字符转化为第二个字符集对应的字符;

   

 3、从文件中导入stdin

             

          使用 < 来重定向标准输入

           

      例:tr  a-z  A-Z  <  /etc/issue该命令把/etc/issue中的小写字母转换成大写字母;

          tr  -d  abc  < /etc/fstab 删除fatab文件中的所有abc中任意字符;

          [root@centos6 ~]# cat  >  filea

           nihao

           linux

           haha

          按ctrl+d离开,可以使用文件代替键盘输入;

     

      使用 “<<终止词”命令从键盘把多行重定向给stdin,直到终止词位置的所有文件都发送给stdin

          

           例:[root@centos6 ~]#mail -s  -u aa   <<end

               nihao aa

               haha

               end

               输入end回车邮件就会发送;

 

4、管道:

      

       管道(使用符号 | 表示)用来连接命令:

    

         命令1 | 命令2 |命令3 | …….

 

       将命令1stdout发送给命令2stdout,由命令2stdout发送到命令3stdout

       Stderr默认不能通过管道转发,可以利用2>&1|&实现;

 

           命令1 | tee 文件名 | 命令2

                例:ls  |tee a1.txt | grep -i ^a

         把命令1stdout保存到文件中,然后管道再输入给命令2

原创文章,作者:zhengyibo,如若转载,请注明出处:http://www.178linux.com/27472

(0)
zhengyibozhengyibo
上一篇 2016-08-04 14:41
下一篇 2016-08-04 14:41

相关推荐

  • 第十七周 作业–结合图形描述lvs原理

        LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。   Lvs有三种模式分别是lvs-nat、lvs-dr、lvs-tun。下面分别介绍lvs-nat、lvs-dr…

    Linux干货 2016-12-07
  • iptables基础详解

    一.iptables基础认知二.iptables使用格式  一.iptables简介   1.Iptabels是与Linux内核集成的包过滤防火墙系统,几乎所有的linux发行版本都会包含Iptables的功能。如果 Linux 系统连接到因特网或LAN、服务器或连接 LAN 和因特网的代理服务器, 则Iptables有利于在 …

    2017-05-03
  • Linux下搭建路由器

    客户端1:CentOS6.9 客户端2:CentOS7.3 路由器:router1(CentOS7.3)、router2(CentOS7.3) r router3(CentOS7.3) 1 准备工作 为了避免干扰,最好建立独立的网络。 打开VMvare的虚拟网络编辑器,点击添加网络按钮,添加VMnet11并且将左下角使用“本地DHCP服务将IP地址分配给虚拟…

    Linux干货 2017-08-20
  • user相关的一些命令及用法

    前言            我们知道,当我们进入一家公司做运维方面的工作的时候,我们需要对公司的服务器进行监控管理,换句话说,我们需要一个身份来操作服务器。那么我们又知道,linux系统下拥有最高权限的管理员是Root,它无所不能,无所畏惧,那么公司肯定就是不会把这个账户交给你使用。那么就引出一个概…

    2017-07-22
  • lvs实践(lvs+nginx+mariadb+php—fpm+nfs搭建wordpress)

    lvs实践(lvs+nginx+mariadb+php—fpm+nfs搭建wordpress)   lvs实践(lvs+nginx+mariadb+php—fpm+nfs搭建wordpress) lvs_dr模型 nginx mariadb php-fpm wordpress   lvs实践(lvs+nginx+mariadb+php—f…

    2017-01-03