linux 之管道命令與重定向

2022-06-11 02:21:11 字數 2899 閱讀 9287

重定向能夠實現linux命令的輸入輸出與檔案之間重定向,以及實現將多個命令組合起來實現更加強大的命令。這部分涉及到的比較多的命令主要有:

涉及到的比較多的命令主要有:

使用shell中預設使用檔案描述符012分別代表標準輸入、標準輸出、標準錯誤

1.  >與》的含義

使用》可以將本來出現在螢幕的標準輸出資訊重定向到乙個檔案中。

用》可以在實現重定向時不覆蓋原有內容,而是在檔案末尾追加內容。

兩個命令都是如果檔案不存在則建立檔案

2.遮蔽不想看到的資訊

linux中有乙個特殊的檔案/dev/null,這個檔案叫做位元桶(bit bucket),可以接受輸入資訊但是什麼都不做。因此要抑制命令的輸出資訊,只需要如下操作:

ls /usr/ > /dev/null    將ls /usr/的標準輸出重定向到位元桶

3.舉栗

輸出重定向

型別符號

功能舉栗

標準輸出重定向

命令》檔案或

命令》檔案

以覆蓋或追加的方式,把命令的正確輸出內容輸出到指定的檔案中,

命令的錯誤輸出列印到終端中

ls -l /usr/tmp >dir  重定向覆蓋

ls -l /usr/tmp >>dir  重定向追加

標準錯誤輸出重定向

錯誤命令 2>檔案或

錯誤命令 2>>檔案

以覆蓋或追加的方式,把命令的錯誤輸出內容輸出到指定的檔案中,

命令的正確輸出列印到終端中

ls /usr/tmp 2>err.file 錯誤輸出到err.file

標準輸出與標準錯誤輸出重定向

命令 >檔案 2>&1或

命令 >>檔案 2>&1

以覆蓋或追加的方式,把命令的正確輸出或錯誤輸出內容輸出到指定的檔案中。

ls /usr/tmp >output.file 2>&1  錯誤和輸出重定向到output

命令 &>檔案 或

命令 &>>檔案

以覆蓋或追加的方式,把命令的正確輸出或錯誤輸出內容輸出到指定的檔案中。

ls /usr/tmp &>output.file  錯誤和輸出重定向到output

命令 >>檔案1 2>檔案2

以追加的方式,把命令的正確輸出內容輸出到檔案1中,以覆蓋的方式,把命令的錯誤輸出內容輸出到檔案2。

其他例子:

ls /usr/tmp 2>&1 >output.file  輸出重定向到output,錯誤輸出到螢幕

wc 輸入重定向,《其實是0《的簡寫

echo "" > test.log  或》test.log,快速清空檔案

管道是一種兩個程序間進行單向通訊的機制,它表現出來的形式將前面每乙個程序的輸出(stdout)直接作為下乙個程序的輸入(stdin),如果要進行雙工通訊,需要建立兩個管道。

因為管道傳遞資料的單向性,管道又稱為半雙工管道。

管道命令的特性:

1、管道命令使用|作為界定符號

2、管道命令只能處理前乙個命令的standard output,對於standard error output會予以忽略。

3、管道命令必須要能夠接受來自前乙個命令的資料成為standard input繼續處理才行,比如less,more,head,tail...,而ls,cp,mv不會接受standard input的命令,所以他們就不是管道命令了。

舉栗:1.uniq與sort命令:uniq命令排除重複的行,sort命令將文字行排序。

[root@test]#cat ls.txt

aaaaaaaaaaaaaaaaaaaaaaaa

bbbbbbbbbbbbbbbbbbbbbbbb

aaaaaaaaaaaaaaaaaaaaaaaa  

[root@test]#cat ls.txt |sort|uniq

aaaaaaaaaaaaaaaaaaaaaaaa

bbbbbbbbbbbbbbbbbbbbbbbb

我們還可以對uniq命令加上-d選項來檢視重複的行,如下:

[root@test]#cat ls |sort|uniq -d

aaaaaaaaaaaaaaaaaaaaaaaa

2.  wc命令:統計文字的行數、單詞書和位元組數

[root@test]#ls /bin /usr/bin/ | sort | uniq | wc

使用wc -l引數統計**的行數:

[root@test]#find cn/ -name "*.php" |xargs cat|wc -l

上面這個例子統計了cn目錄下所有php檔案的行數之和。

3.grep命令:用來查詢匹配的模式,並且列印包含該模式的行:

[root@test]#ls /bin /usr/bin/ | sort | uniq | grep zip

在/bin和/usr/bin目錄下找出名字帶有zip的程式,並且列印這些程式的名字。

4.head和tail命令:

head檢視檔案或者文字的前面部分,tail檢視檔案或者文字的末尾部分。二者都可以接收-n選項,表示顯示的行數。

[root@test]#ls /bin/ | head -n 5

linux之管道與重定向

在linux作業系統中,輸入和輸出是兩個相對的操作,使用者將資料輸入到系統的暫存器中,cpu呼叫處理,處理後的資料同樣放入暫存器中,當然系統有很多的暫存器,輸入輸出的內容在不同的暫存器中,而後在螢幕上顯示出來。輸入重定向 cat file 檔名 正確的輸出重定向 2 檔名 錯誤的輸出重定向 檔名 全...

linux 重定向與管道

linux中重定向表示符號有 linux中管道表示符號 先說重定向,重定向符號的指向的方向代表了資料的流向,這句話很重要!先說 與 可以看出資料流向為從左到右,命令在左邊,所以又叫重定向輸出。通常用於輸出到檔案。如cat test1.txt test2.txt,會發現,檔案test2.txt中的原有...

Linux重定向與管道

對於任何一條 linux 命令執行,它會是這樣乙個過程 乙個命令執行了 先有乙個輸入 輸入可以從鍵盤,也可以從檔案得到。命令執行完成 成功了,會把成功結果輸出到螢幕 standard output預設是螢幕 命令執行有錯誤 會把錯誤也輸出到螢幕上面 standard error預設也是指的螢幕 三種...