Bash Shell重要基礎——管線命令

管線命令介紹

一般執行bash指令的時候會有輸出結果,很多情況的輸出不符合我們想要的格式,這時候就可以用管線命令來控制輸出格式了,"|"是管線命令的界定符,管線命令有兩個需要注意的地方

僅能處理standard output

管線命令必須能接受前一個指令的輸出結果作為standward input繼續處理才行

簡單來說,bash或者管線命令需要正確執行(出現錯誤會中斷執行)

截取命令cut,grep

cut

cut指令以行為單位處理輸出消息,"切"出一段你想要的結果

cut選項與參數:

-d 以某個字符為分割標示(只能單字符)與-f一起使用

-f -d將輸出分成幾段,-f輸出第幾段

-c 以字符為單位截取某一長度的信息

示例一:

cut指令

上圖指令是顯示/etc下的文件信息(ll /etc/),並且以空格作為分割符(-d ' '),輸出第一欄(-f1)

示例二:

上圖指令是顯示/etc/下文件信息,輸出每一行的前四個字符(-c 1-4)

grep

grep是對輸出信息進行抓去操作,此指令不僅可以抓取bash指令輸出消息,還可以抓取文件信息,十分重要

grep指令的選項與參數:

root@ubuntu-3:~# grep [-cinv] [--color=auto] '搜尋字串' filename

-c 計算"搜尋字串"的次數

-i 忽略大小寫

-n 輸出行號

-v 反向查詢,即抓取不包含"搜尋字串"的信息

--color=auto 抓取結果高亮顯示

示例一:

對ps -aux指令抓取root用戶

排序指令:sort,wc,uniq

sort

root@ubuntu-3:~# sort [-fburtk] [file or stdin]

sort選項與參數:

-f :忽略大小寫的差異,例如 A 與 a 視為編碼相同;

-b :忽略最前面的空白字符部分;

-r :反向排序;

-u :就是 uniq ,相同的數據中,僅出現一行代表;

-t :分隔符號,默認是用 [tab] 鍵來分隔;

-k :以那個區間 (field) 來進行排序的意思

範例一:

對/etc/passwd 下的內容以":"分割,並且用第三欄來排序

uniq

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

root@ubuntu-3:~# uniq [-ic]

uniq選項與參數

-i 忽略大小寫

-c 進行計數

範例一:使用 last 將帳號列出,僅取出帳號欄,進行排序對重複數據僅顯示一次;

wc

如果我想要知道 /etc/passwd 這個文件裡面有多少字?多少行?多少字符的話, 可以怎麼做呢?其實可以利用 wc 這個指令來達成喔!

root@ubuntu-3:~# wc [-lwm]

wc選項與參數

-l :僅列出行;

-w :僅列出多少字(英文單字);

-m :多少字符;

示例一: