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

相关推荐

  • N22-第五周作业

    1、显示当前系统上root、fedora或user1用户的默认shell;  egrep "^(root|fedora|user1)" /etc/passwd|awk -F: '{printf "%-15s:%-s\n",$1,$7}' 2…

    Linux干货 2016-09-15
  • 正则表达式基础以及grep的简单使用

    正则表达式基础以及grep的简单使用   1,定义 正则表达式是你所定义的模式模板,Linux可以用它来过滤文本。Linux工具(比如grep、sed、gawk)能够在处理数据时使用正则表达式对数据进行模式匹配。如果数据匹配模式,它就会被接受并进一步处理;如果数据不匹配,它就会被滤掉。 2,正则表达式的原则 (1)正则表达式模式都区分大小写。(2)…

    2017-04-09
  • 浏览和管理log文件

    浏览和管理log文件 log文件是一种包含系统消息的文件,包括内核、服务和应用运行在其上。不同的日志文件对应不同的日志信息。例如,默认的系统log文件,一个log文件对应安全消息,一个log文件对应计划任务。当要对一个系统问题排错例如加载内核驱动或者当寻找对系统的非授权登录攻击,日志文件是很有帮助的。一些log文件被一个称之为rsyslogd的守护进程控制。…

    Linux干货 2017-05-15
  • linux启动流程+任务计划

    20160907 一、作业 1、每周2, 4, 7备份/var/log/messages文件至/logs目录中,文件名形如“messages-yyyymmdd” 2、每两小时取出当前系统/proc/meminfo文件中以S或M开头的信息追加至/tmp/meminfo.txt文件中 二、博客 1、centos5,6启动流程 开机——POST…

    Linux干货 2016-09-08
  • 第四周作业

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [root@centos7 ~]# cp -r /etc/skel/ /home/tuser1 [root@centos7 ~]# chmod …

    Linux干货 2017-01-16
  • LAMP基于编译安装方式实现(httpd与php以fastcgi方式结合)3

    概述     在某些现有rpm包不能满足需求的时候,可能需要编译安装LAMP环境,本篇就介绍下php与httpd结合方式为fastcgi方式结合时的编译安装,同时,由于httpd与php以module方式结合时,仅是编译选项有所差别,故也会简单说明下编译选项的差异 环境     CentOS7系统,…

    Linux干货 2016-10-17