3  Unix 哲學與工具思維

Unix 哲學是終端工作流的基石。理解它,你就理解了為什麼終端工具如此強大。

3.1 核心原則

3.1.1 1. 做好一件事

每個工具只做一件事,但把它做到極致:

工具 功能
cat 串接檔案
grep 搜尋文字
sort 排序
uniq 去除重複
wc 計數

3.1.2 2. 文字流是通用介面

所有工具都用純文字溝通,這讓它們可以無縫組合:

# 統計最常見的錯誤類型
cat error.log | grep "ERROR" | cut -d: -f2 | sort | uniq -c | sort -rn

3.1.3 3. 管道是膠水

管道 (|) 讓小工具組合成強大的工具鏈:

# 找出專案中最長的 10 個檔案
find . -name "*.py" -exec wc -l {} \; | sort -rn | head -10

3.2 現代工具的演進

傳統 Unix 工具有了更現代的替代品:

傳統工具 現代替代 優勢
find fd 更快、語法更簡潔
grep ripgrep (rg) 更快、自動忽略 .gitignore
cat bat 語法高亮、行號
ls lsd / eza 圖標、顏色、tree 模式
cd zoxide 記住常用目錄

3.3 實際應用

以下是一個真實的工作流範例:

# 找出所有包含 TODO 的 markdown 檔案並計數
fd -e md | xargs rg "TODO" -c | sort -t: -k2 -rn

這行命令做了:

  1. fd -e md:找出所有 .md 檔案
  2. xargs rg "TODO" -c:在每個檔案中計算 TODO 出現次數
  3. sort -t: -k2 -rn:按計數降序排列

3.4 實作練習

  1. 安裝現代工具:
brew install fd ripgrep bat lsd zoxide
  1. 嘗試用管道組合命令:
# 你的歷史命令中,最常用的 10 個命令是什麼?
history | awk '{print $2}' | sort | uniq -c | sort -rn | head -10
Note延伸閱讀

《The Art of Unix Programming》by Eric S. Raymond 是深入了解 Unix 哲學的經典著作。