管線命令與分號連續下達命令區別

管線命令使用的是“ | ”這個界定符號! 另外,管線命令與連續下達命令是不一樣的

先用一個例子來說明下:

假設我們想要知道 /etc/ 底下有多少檔案,那麼可以利用 ls /etc 來查閱,不過, 因爲 /etc 底下的檔案太多,導致一口氣就將屏幕塞滿了~不知道前面輸出的內容是啥?此時,我們可以透過 less 指令的協助,利用:[root@Linux~]# ls -al /etc | less如此一來,使用 ls 指令輸出後的內容,就能夠被 less 讀取, 並且利用 less 的功能,我們就能夠前後翻動相關的信息了


這個管線命令『 | 』僅能處理經由前面一個指令傳來的正確信息,也就是 standard output ( STDOUT ) 的信息,對於 stdandard error 並沒有直接處理的能力,請記得。


那麼整體的管線命令可以使用下圖表示之


                     

在每個管線的前後部分都是『指令』呢!而後一個指令的輸入乃是由前一個指令的輸出而來的!


基本的管線命令指令介紹:

cut:!這個指令可以將一段訊息的某一段給他『切』出來~ 處理的訊息是以『行』爲單位

[root@linux ~]# cut -d'分隔字符' -f fields
[root@linux ~]# cut -c 字符區間
參數:
-d :後面接分隔字符。與 -f 一起使用;
-f :依據 -d 的分隔字符將一段訊息分割成爲數段,用 -f 取出第幾段的意思;
-c :以字符 (characters) 的單位取出固定字符區間;
範例:
範例一:將 PATH 變量取出,我要找出第三個路徑。
[root@linux ~]# echo $PATH
/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin:/usr/games:
[root@linux ~]# echo $PATH | cut -d ':' -f 5
# 嘿嘿!如此一來,就會出現 /usr/local/bin 這個目錄名稱!
# 因爲我們是以 : 作爲分隔符,第五個就是 /usr/local/bin 啊!
# 那麼如果想要列出第 3 與第 5 呢?,就是這樣:
[root@linux ~]# echo $PATH | cut -d ':' -f 3,5


grep
剛剛的 cut 是將一行訊息當中,取出某部分我們想要的,而 grep 則是分析一行訊息,

[root@linux ~]# grep [-acinv] '搜尋字符串' filename
參數:
-a :將 binary 檔案以 text 檔案的方式搜尋數據
-c :計算找到 '搜尋字符串' 的次數
-i :忽略大小寫的不同,所以大小寫視爲相同
-n :順便輸出行號
-v :反向選擇,亦即顯示出沒有 '搜尋字符串' 內容的那一行!
範例:
範例一:將 last 當中,有出現 root 的那一行就取出來;
[root@linux ~]# last | grep 'root'
範例二:與範例一相反,只要沒有 root 的就取出!
[root@linux ~]# last | grep -v 'root'


sort排序指令

[root@linux ~]# sort [-fbMnrtuk] [file or stdin]
參數:
-f :忽略大小寫的差異,例如 A 與 a 視爲編碼相同;
-b :忽略最前面的空格符部分;
-M :以月份的名字來排序,例如 JAN, DEC 等等的排序方法;
-n :使用『純數字』進行排序(預設是以文字型態來排序的);
-r :反向排序;
-u :就是 uniq ,相同的數據中,僅出現一行代表;
-t :分隔符,預設是 tab 鍵;
-k :以那個區間 (field) 來進行排序的意思


uniq
如果我排序完成了,想要將重複的資料僅列出一個顯示,可以怎麼做呢?

[root@linux ~]# uniq [-ic]
參數:
-i :忽略大小寫字符的不同;
-c :進行計數
範例:
範例一:使用 last 將賬號列出,僅取出賬號欄,進行排序後僅取出一位;
[root@linux ~]# last | cut -d ' ' -f1 | sort | uniq


wc
如果我想要知道 /etc/man.config 這個檔案裏面有多少字?多少行?多少字符的話, 可以怎麼做呢?

[root@linux ~]# wc [-lwm]
參數:
-l :僅列出行;
-w :僅列出多少字(英文單字);
-m :多少字符;
範例:
範例一:那個 /etc/man.config 裏面到底有多少相關字、行、字符數?
[root@linux ~]# cat /etc/man.config | wc
138 709 4506
# 輸出的三個數字中,分別代表: 『行、字數、字符數』

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章