Linux系统重定向和管道

1、标准输入和标准输出

 

           程序:指令+数据

                  读入数据:input

                  输出数据:output

 

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

         

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

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

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

 

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

 

         Stdout和stderr可以被重定向到文件:

    

             命令   操作符号   文件名

 

                > 把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 | …….

 

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

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

 

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

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

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

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

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

相关推荐

  • 脚本进阶

    1、写一脚本,用ping命令测试192.168.1.1-192.168.1.10之间的所有主机的在线状态,在线的主机使用绿色表示,不在线的主机使用红色表示   2、如何给网络配置多个地址,有哪些方式   3、写一个脚本 (1)假设某目录(/etc/rc.d/rc3.d/)下分别有K开头的文件和S开头的文件若干 (2)显示所有以K开头的文件…

    2018-01-08
  • 第三周小练习

    1. 列出当前系统上所有已经登陆的用户的用户名,注意,同一个用户登陆多次,则显示一次即可 who -u|grep -o "^[[:alnum:]]*\>"|uniq 2. 取出最后登陆到当前系统的用户信息 who|tail -n1 3. 取出当前系统上被用户当作其默认shell的最多的那个sh…

    Linux干货 2016-11-21
  • 第八周 服务管理与文本处理

    1、简述systemd的新特性及unit常见类型分析,能够实现编译安装的如nginx\apache实现通过systemd来管理 2、描述awk命令用法及示例(至少3例) 3、描述awk函数示例(至少3例)    

    2018-01-21
  • 文本处理工具sed的使用以及Vim的使用技巧详解

    一、什么是sed     sed的英文全称是Stream EDitor,叫行编辑器。     sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容…

    Linux干货 2016-08-11
  • Linux 命令小结

    cat /proc/meminfo 校验内存使用 cat /proc/swaps 显示哪些swap被使用 cat /proc/version 显示内核的版本 cat /proc/net/dev 显示网络适配器及统计 cat /proc/mounts 显示已加载的文件系统 lspci -tv 罗列 PCI 设备…

    Linux干货 2017-06-18
  • httpd功能配置之访问控制

       httpd服务可以实现对资源访问控制,可以根据IP地址和用户两种方式进行控制。    一、用户认证控制      1、在站点根目录下创建一个目录及一个页面文件      2、修改/var/httpd/conf/httpd.conf文件   &n…

    Linux干货 2016-03-11