您可以連線在一起,使兩個命令從一個程式的輸出成為下一個程式的輸入。以這種方式連線的兩個或多個命令可以形成一個管。
要製作一個管道,放了兩個命令在命令列之間的豎線(|)。
當一個程式將其從另一個程式的輸入,該輸入執行某些操作,並寫入到標準輸出的結果,它被稱為作為一個過濾器。
grep程式搜尋一個或多個檔案的??行有一定的模式。語法是:
$grep pattern file(s)
這個名字源於“grep”的ED(UNIX行編輯器)命令g/re/p指“全域性搜尋所有包含一個正規表示式和列印。”
正規表示式是一些純文字(一個字,例如)和/或特殊字元用於模式匹配。
grep最簡單的用法是看一個字組成的一個模式。它可以用在管道中,因而只有那些行包含一個給定的字串的輸入檔案被傳送到標準輸出。如果你不給grep的讀取一個檔案名時,它讀取標准輸入的所有過濾方案的工作方式:
$ls -l | grep "Aug" -rw-rw-rw- 1 john doc 11008 Aug 6 14:10 ch02 -rw-rw-rw- 1 john doc 8515 Aug 6 15:30 ch07 -rw-rw-r-- 1 john doc 2488 Aug 15 10:51 intro -rw-rw-r-- 1 carol doc 1605 Aug 23 07:35 macros $
有各種不同的選項,可以一起使用grep命令:
Option | 描述 |
---|---|
-v | Print all lines that do not match pattern. |
-n | Print the matched line and its line number. |
-l | Print only the names of files with matching lines (letter "l") |
-c | Print only the count of matching lines. |
-i | Match either upper- or lowercase. |
接下來,讓我們使用一個正規表示式,告訴grep來查詢線“carol”,由零個或多個其他字元在正規表示式簡稱為“*”),再其次是“Aug”。
在這裡,我們使用-i選項來區分大小寫的搜尋:
$ls -l | grep -i "carol.*aug" -rw-rw-r-- 1 carol doc 1605 Aug 23 07:35 macros $
sort命令安排行的文字,字母或數位。下面的例子各種行在food檔案:
$sort food Afghani Cuisine Bangkok Wok Big Apple Deli Isle of Java Mandalay Sushi and Sashimi Sweet Tooth Tio Pepe's Peppers $
sort命令預設情況下,按字母順序排列的文字行。有很多的選擇,控制排序:
Option | 描述 |
---|---|
-n | Sort numerically (example: 10 will sort after 2), ignore blanks and tabs. |
-r | Reverse the order of sort. |
-f | Sort upper- and lowercase together. |
+x | Ignore first x fields when sorting. |
超過兩個命令可以連結到一個管道。以先前的管道使用grep的例子,我們可以進一步在August 修改的檔案大小順序進行排序。
下面的管道由命令ls,grep和排序:
$ls -l | grep "Aug" | sort +4n -rw-rw-r-- 1 carol doc 1605 Aug 23 07:35 macros -rw-rw-r-- 1 john doc 2488 Aug 15 10:51 intro -rw-rw-rw- 1 john doc 8515 Aug 6 15:30 ch07 -rw-rw-rw- 1 john doc 11008 Aug 6 14:10 ch02 $
August 大小順序修改這條管道在你的目錄中的所有檔案進行排序,並將它們列印到終端螢幕。行數位順序排序選項+4Ñ跳過四個欄位(欄位由空格分隔),然後排序。
一個長的輸出通常會壓縮在螢幕上,但如果你執行文字通過或pg作為一個過濾器,每屏顯示的文字後,顯示停止。
讓我們假設你有一個長的目錄列表。為了使其更易於閱讀排序列表,通過管道輸出如下:
$ls -l | grep "Aug" | sort +4n | more -rw-rw-r-- 1 carol doc 1605 Aug 23 07:35 macros -rw-rw-r-- 1 john doc 2488 Aug 15 10:51 intro -rw-rw-rw- 1 john doc 8515 Aug 6 15:30 ch07 -rw-rw-r-- 1 john doc 14827 Aug 9 12:40 ch03 . . . -rw-rw-rw- 1 john doc 16867 Aug 6 15:56 ch05 --More--(74%)
螢幕將填補文字,其中包括按檔案大小順序排序的行了一屏。在螢幕底部是更迅速,在那裡你可以通過排序的文字鍵入一個命令來移動。
當你完成這個螢幕上,可以使用任何的討論更多程式中列出的命令。