Linux之管道與重新導向

來源:互聯網
上載者:User

Linux之管道與重新導向 一、重新導向輸出        可以通過操作符>將標準輸出1和標準錯誤輸出2重新導向到某個檔案,比如:        #ls -l > lsoutput.txt        上面命令將標準輸出重新導向到檔案lsoutput.txt中。        當然,也可以將標準檔案描述符以外的檔案描述符進行重新導向,不過這種情況很少見。        預設情況下,如果lsoutput.txt檔案已經存在,則它的內容將被覆蓋,如果想將輸出內容附加到一個檔案中,則可以使用>>操作符進行輸出重新導向,比如:        #ls -l >> lsoutput.txt        上面命令將輸出附加到指定檔案的尾部。        有時候會用重新導向輸出將命令產生的錯誤重新導向輸出到某個檔案以屏蔽螢幕輸出。        下面命令將標準輸出和錯誤輸出分別重新導向到不同的檔案中:        #kill -HUP 1234 > killout.txt 2>killerr.txt        如果想把兩組輸出都重新導向到一個檔案中,你可以使用>&操作符來結合兩個輸出,比如:        #kill -l 1234 >killouterr.txt 2>&1        這條命令將標準輸出和標準錯誤輸出都重新導向到同一個檔案中。請注意操作符出現的順序,這條命令的含義是“將標準輸出重新導向到檔案killouterr.txt,然後將標準錯誤輸出重新導向到與標準輸出相同的地方。”如果順序有誤,重新導向將不會按照預期執行。        還有一種將標準輸出或標準錯誤輸出丟棄的好辦法,比如:        #kill -l 1234 >/dev/null 2>&1        資源回收筒/dev/null就像黑洞一樣,任何東西進入後都肉包子打狗有去無回。 二、重新導向輸入        我們還可以重新導向標準輸入,比如:        #more < killout.txt        不過上面的命令似乎意義不大,因為more本來也可以接受檔案名稱為參數,我就是刷一下存在感而已。 三、管道        我們 可以用管道操作符|來串連進程。Linux與MS-DOS不同,在Linux下通過管道串連的進程可以同時運行,並且隨著資料流在它們之間的傳遞可以自動地進行協調。        下面以使用sort命令對ps命令的輸出進行排序來說明管道的意義,假設不用管道就必須要分幾個步驟來實現:        #ps > psout.txt        #sort psout.txt > pssort.out        更精巧的一個解決方案是用管道來串連進程,比如:        #ps | sort > pssort.out        如果想在螢幕上分頁顯示輸出結果,我們可以再串連第三個進程more,將它們都放在同一個命令列上,可以如此:        #ps | sort | more        允許串連的進程數目是沒有限制的。假設我們想看看所有系統中啟動並執行進程的名字,但不包括shell本身,可以如此:        #ps -xo comm | sort | uniq | grep -v sh | more        這個命令首先按字母順序排序ps命令的輸出,再用uniq命令去除重複的內容,然後用grep -v sh命令刪除名為sh的進程,最終將結果分頁顯示在螢幕上。        如你所見,與使用一系列分離的命令並且每個命令都帶有自己的臨時檔案相比,這是一個更精巧的解決方案。但這裡有一點需要引起注意,如果你有一系列的命令需要執行,相應的輸出檔案是在這一組命令被建立的同時立刻被建立或寫入的,所以絕不要在命令流中重複使用相同的檔案名稱。如果嘗試執行如下命令:        #cat mydata.txt | sort | uniq | > mydata.txt        你最終將得到一個空檔案,因為你在讀取檔案mydata.txt之前就已經覆蓋了這個檔案的內容。 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.