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.www58058.com/27472

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

相關推薦

  • Linux的命令使用格式

    ◆Linux命令格式:command [options]  [arguments]command:命令options:  –單詞   或   -單字如: ls –allequ      ls -als -a -b -cequ&…

    Linux干貨 2016-10-31
  • 推薦-LINUX磁盤管理

    Evernote Export LINUX磁盤管理 linux學習筆記 磁盤分區 文件系統 掛載 在操作系統中,磁盤管理屬于設備管理的范疇。一塊硬盤安裝到主機之后稱為裸設備,若要能夠在Linux系統中使用必須對其進行如下步驟:分區=>格式化(創建文件系統)=>掛載 LINUX系統的設備類型 Linux沿襲Unix的風格,將所有設備認成是一個文件 …

    Linux干貨 2016-04-05
  • DNS原理詳解02

    9、子域授權     1、在父域的區域配置文件中增加以下記錄,即為增加了子域授權            opt.patrickli.com.         IN      NS     &…

    Linux干貨 2016-08-29
  • 馬哥教育網絡班21期-第六周課程練習

    1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#;  # :%s@^[[:space:]]\+@#&@g 2、復制/boot/grub/grub.conf至/tmp目錄中,刪除/tmp/grub.conf文件中的行首的空白字符; &nb…

    Linux干貨 2016-08-15
  • Linux程序包管理yum

    yum客戶端: 配置文件: /etc/yum.conf:為所有倉庫提供公共配置 /etc/yum.repos.d/*.repo:為倉庫的指向提供配置 倉庫指向的定義: [repositoryID] name=Some name for this repository baseurl=url://path/to/repository/ enabled={1|0…

    Linux干貨 2015-11-23
欧美性久久久久