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

相关推荐

  • Python 数据结构

    python 内置数据结构python 内置数据结构数字的处理函数: round() 五舍六入       2.5  2     2.6    3 floor() 向下取整       2.5  2     2.6    2 ceil() 向上取整       2.5  3     2.6    3 min() 取最小的       1,2,3      1…

    Linux干货 2017-09-23
  • 马哥教育网络班22期第一周课程练习1-未闻花名

    一、cpu架构 计算机体系结构: 运算器、控制器(cpu还包含寄存器)、存储器(内存)、输入设备(键盘、硬盘等)、输出设备(显示器、硬盘等) cpu组成: 核心部件:运算器(加法器)、控制器()、寄存器(由于数据总线复用,为cpu保存现场,过程数据记录)。 辅助部件:一、二、三级缓存:弥合CPU和内存速率不匹配。频率控制器? 地址总线:内存寻址。 数据总线:…

    Linux干货 2016-08-15
  • N21沉舟第七周作业

    1、创建一个10G分区,并格式为ext4文件系统;    (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;    (2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳; mke2fs -t ex…

    Linux干货 2016-08-22
  • keepalive配置文件详解

    第一部分:全局定义块 1、email通知。作用:有故障,发邮件报警。 2、Lvs负载均衡器标识(lvs_id)。在一个网络内,它应该是唯一的。 3、花括号“{}”。用来分隔定义块,因此必须成对出现。如果写漏了,keepalived运行时,不会得到预期的结果。由于定义块内存在嵌套关系,因此很容易遗漏结尾处的花括号,这点要特别注意。 global_defs{ n…

    2017-09-17
  • KVM部署及简单使用

    KVM特点 KVM必须在具备Intel VT或AMD-V功能的x86平台上运行。KVM包含一个为处理器提供底层虚拟化,可加载的核心模块kvm.ko(kvm-intel.ko或kvm-AMD.ko)。使用一个经过修改的QEMU(qemu-kvm),作为虚拟机上层控制和界面。 由于KVM仅是一个简单的虚拟化模块,所以它的内存管理没有自我实现,需借助于Linux内…

    Linux干货 2016-02-14
  • 推荐-自动化运维之puppet小试牛刀

     一、puppet介绍       puppet是IT基础设施自动化管理工具,“她”能够帮助系统管理员管理基础设施的整个生命周期:供应(provisioning、配置(configuration)、联动(orchestration)及报告(reporting)。    …

    Linux干货 2016-04-05