Linux Pipe 管線 (|)

Pipe 符號 | (管線) 是 Linux 命令列最強大的功能之一。 它可以把「上一個指令的輸出 (stdout)」直接接管過來,當作「下一個指令的輸入 (stdin)」。

就像水管一樣,把資料從這邊接到那邊,經過一層一層的處理。

基本語法

指令A | 指令B | 指令C

經典組合技

1. 搭配 grep 過濾搜尋

這是最常見的用法。

# 1. 列出所有程序 (ps aux)
# 2. 搜尋包含 nginx 的行
ps aux | grep nginx

2. 搭配 less 分頁檢視

當輸出太長時,用管線接到 less 慢慢看。

cat huge_file.txt | less

3. 搭配 wc 計算數量

wc -l 可以計算行數。

# 計算目前目錄下有多少個檔案 (包含子目錄)
find . -type f | wc -l

4. 搭配 sortuniq 統計排行

這是資料分析常用的技巧。例如分析網頁 Log,看出哪個 IP 訪問次數最多。

# 1. 取出 access.log 的第一欄 (IP) (假設是用 awk)
# 2. 排序 (sort)
# 3. 去除重複並計算次數 (uniq -c)
# 4. 依照次數排序 (sort -nr)
# 5. 取前 5 名 (head -n 5)

cat access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -n 5

看到 Pipe 的威力了嗎?透過組合簡單的指令,能完成非常複雜的任務!