1. gzyueqian
      13352868059

      嵌入式Linux系統培訓的管道是什么?重定向分為哪幾種?

      更新時間: 2019-03-14 15:14:34來源: 嵌入式培訓瀏覽量:7513

        嵌入式Linux系統中的管道何重定向分別是什么呢?粵嵌嵌入式Linux培訓來說道說道。

        一、Linux系統管道

        我們可以用管道操作符|來連接進程,代表將一個命令的STDOUT作為另一個命令的STDIN,它可以多次傳遞。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之前就已經覆蓋了這個文件的內容。

        二、重定向輸出

        可以通過操作符>將標準輸出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培訓,不僅僅是知道Linux系統的管道和重定向,更重要的是明白整個體系是怎樣的,希望大家都能夠有所成就。


      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 亚洲乱码中文字幕系列 | 日韩欧美tv一区二区在线观看 | 日本最新免费二区 | 日本人喷液视频jizz | 亚洲国产另类久久久精品网站 | 午夜福利久久性色 |