zoukankan      html  css  js  c++  java
  • 管道与重定向

    目录

             重定向

             转换和删除字符tr

    从文件中导入STDIN

    把多行发送给STDIN

    管道

    重定向到多个目标

    重定向

    先说什么是标准输入输出,我们从键盘上敲击,然后输入到我们的电脑中,这是标准的输入,那么什么是标准输出呢,我们在经过一系列正确的操作得到的能在屏幕上显示出来的输出是标准输出。那不正确的操作产生的能显示在屏幕上的信息是啥呢,那就是标准错误。

     

             标准输入(STDIN)-0 默认接受来自键盘的输入

             标准输出(STDOUT)-1 默认输出到终端窗口    

             标准错误(STDERR)-2 默认输出到终端窗口     

       我们可以将我们的操作进行重定向,将信息输入到文件当中去,我们可以通过这样的操作去观察一下操作信息,或我们进行的错误信息。

               >:把标准输出(stdout)进行重定向

               2>:把标准错误输出(stderr)进行重定向

               &>:代表吧所有输出进行重定向

     

      > 文件内容会被覆盖

      set -C: 禁止将内容覆盖已有文件,但可追加

      >| file:强制覆盖

      set +C: 允许覆盖

              >> 原有内容基础上,追加内容

     

      把输出和错误重新定向到文件

      2>: 覆盖重定向错误输出数据流

           2>>: 追加重定向错误输出数据流

           标准输出和错误输出各自定向至不同位置

      COMMAND > /path/to/file.out 2> /path/to/error.out

          合并标准输出和错误输出为同一个数据流进行重定向

          &> 覆盖重定向

          &>> 追加重定向

          COMMAND > /path/to/file.out 2>&1 (顺序很重要)

          COMMAND >> /path/to/file.out 2>&1

          ():合并多个程序的STDOUT

      ( cal 2007 ; cal 2008 ) > all.txt

    转换和删除字符(tr

    格式:tr [option] .. set1 set2

    作用:转换和删除字符

    选项:

                      -c:取字符集的补集

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

        -dc:删除其补集

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

                      -t:将第一个字符集对应的字符转换第二字符集对应的字符(默认)

    对应的字符:

    [:digit:]:数字

    [:alpha:]:字母

    [:lower:]:小写字母

    [:upper:]:大写字母

    [:alnum:]:字母和数字

    [:punct:]:标点符号

    [:space:]:空白字符

    [:print:]:可打印字符

    [:cntrl:]:控制(非打印)字符

    [:graph:]:图形字符

    [:xdigit:]:十六进制字符 

    从文件中导入STDIN

    使用<来重定向标准输入

            某些命令能够接受从文件中导入的STDIN

    tr ‘a-z’ ‘A-Z’< /etc/issue该命令会把/etc/issue中的小写字符都转换成写写字符

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

           cat > file

    mage

    wangxiaochun

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

          Cat > filea < fileb

     

    把多行发送给STDIN(不常用)

    使用“<<终止词”命令从键盘把多行重导向给STDIN

             直到 终止词 位置的所有文本都发送给STDIN

             有时被称为就地文本(heretext

    例如:     

    1  [root@CT71 tmp]# mail -s "HELP" root << END
    2 > Hello
    3 > My name is Shanghai,May I know your name?
    4 > END

    管道

    管道命令无疑是我们在今后操作Linux经常会用带的命令,它的作用是将我们在上一步操作产生的正确的标准输出使用管道后面的命令继续进行操作,如ls /etc/* | grep passwd是不是我们有操作产生的标准的错误输出就无法进行管道处理了呢,并不是的,我们可以使用2>&1|&进行将产生的标准错误输出 交给下一个命令执行。

     

    管道中的—符号

             这个符号就像一个临时介质,我们可以将我们处理的信息暂时存在这个介质里,然后交给管道后面的命令继续对介质中的信息继续处理。这样,我们就必将我们在第一步处理的信息先存在磁盘上在进行下一步操作了,十分的方便。

     

    重定向到多个目标(tee

             格式:command_1 | tee [-a] file_name | command_2

             作用:把命令1STDOUT保存到文件中作为命令2的输入

             选项:-a:追加

             作用:保存不同阶段的输出

                         复杂管道的故障排除

                         同时查看和记录输出

     

     

     

     

  • 相关阅读:
    linux编译C
    Windows下ARP协议的工作原理简介
    窥探QQ基础数据库架构演变史
    JAVA培训—线程同步--卖票问题
    SQLite、MySQL和PostgreSQL 三种关系数据库哪个好?
    再论谭浩强《C语言程序设计》
    JPG加入RAR文件原理详解
    如何区分一个程序员是“老手“还是“新手“?
    AutoITx3.DLL所有函数及说明
    windows索引服务
  • 原文地址:https://www.cnblogs.com/duzhaoqi/p/7236374.html
Copyright © 2011-2022 走看看