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
下一篇 2016-08-04

相關推薦

  • RAID[Redundant Array of Independent Disks | 獨立硬盤冗余陣列 ]

    前言 一個技術要知其然還要知其所以然 RAID 獨立硬盤冗余陣列(RAID, Redundant Array of Independent Disks),舊稱廉價磁盤冗余陣列(Redundant Array of Inexpensive Disks),簡稱磁盤陣列 RAID的基本思想 其基本思想就是把多個相對便宜的硬盤組合起來,成為一個硬盤陣列組,使性能達到…

    Linux干貨 2016-05-20
  • linux系統上命令使用格式及常見命令

    [root@localhost ~]# date -d ‘2017-07-06 00:00:00 ‘  用上面這條指令講解命令使用格式 date command  -d 是參數,參數有可選參數,必選參數,在參數前必選加上- ,還是以這條指令為列,-d可以寫成–date,如果寫成date,date前面必選…

    Linux干貨 2017-08-19
  • Linux 2.6.39-rc3的一個插曲

    2011年4月12日,Linux 2.6.39-rc3發布了,Linus Torvalds寫了一個發布郵件,其中包含了一個長長的為這個版本做過貢獻的人員名單,這個名單中有很多看上去應該是中國人的名字,我挺為他們感到驕傲的(不知道你是否還記得以前本站的”Linux是由誰寫的“)。 不過,沒過一會,發現了一個bug,經過大家的調查(2.6.38版沒有發現這個問題…

    Linux干貨 2016-06-09
  • redis/twemproxy 客戶端連接異常

    對于一個DBA,客戶端連接異常問題可以說是家常便飯的事情,處理多了都想吐。 root cause無疑發生在三個地方,先找自身的原因,依次排查下去: 1)服務器端db的負載,如果負載太高,創建socket太慢引起超時。另外服務器端socket的個數太多,也可以導致創建連接需要很長的時間或者創建連接不成功。 2)網絡是夠有抖動,包括lvs/twemproxy重啟…

    Linux干貨 2015-04-03
  • 集中管理利器-puppet快速入門-中

    集中管理利器-puppet快速入門-中 6.    嘗試啟動master puppet 啟動master puppet,并確認8140端口已被監聽:  #puppet返回成功,但不一定能成功啟動,puppet這個功能希望能改進… 7.    目錄結構 /etc/puppet/  …

    Linux干貨 2015-05-04
  • 網絡配置之-nmcli

    使用nmcli配置網絡 NetworkManager是管理和監控網絡設置的守護進程,設備既就是網絡接口,連接是對網絡接口的配置,一個網絡接口可以有多個連接配置,但同時只有一個連接配置生效。 1 使用nmcli配置主機名 CentOS6 之前主機配置文件:/etc/sysconfig/network CentOS7主機名配置文件:/etc/hostname,默…

    Linux干貨 2017-05-07
欧美性久久久久