Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Linux 管道與重導向完整解析:標準輸入/輸出/錯誤流控制實戰

編輯:Linux 系統常見問題解答

資料流基礎概念

Linux 指令預設在 CLI 環境執行,輸入輸出皆為純文字,三大標準資料流:

代碼名稱檔案描述符預設裝置
STDIN標準輸入0鍵盤
STDOUT標準輸出1終端機
STDERR標準錯誤2終端機

重導向操作

語法說明
指令 > file標準輸出導向檔案(覆蓋)
指令 >> file標準輸出導向檔案(附加)
指令 2> file標準錯誤導向檔案
指令 2>&1標準錯誤導向標準輸出(合併輸出)
指令 > file 2>&1標準輸出與錯誤皆導向檔案
指令 < file標準輸入從檔案讀取
指令 << EOF ... EOFHere Document 內嵌輸入

管道操作

將前一個指令的標準輸出,作為下一個指令的標準輸入:

指令1 | 指令2 | 指令3 ...

實戰範例

1. 找出佔用記憶體前 10 的程序

ps aux --sort -%mem | head -n 11

2. 統計當前目錄下各類型檔案數量

find . -type f | awk -F. '{print $NF}' | sort | uniq -c | sort -rn

3. 即時監控日誌關鍵字

tail -f /var/log/nginx/access.log | grep --line-buffered "ERROR"

4. 將指令結果與錯誤同時存檔並顯示螢幕

make 2>&1 | tee build.log

5. 使用 Here Document 建立多行檔案

cat > /etc/yum.repos.d/local.repo << 'EOF'
[local]
name=Local Repo
baseurl=file:///mnt/repo
enabled=1
gpgcheck=0
EOF

進階技巧

  • exec 1>log.txt 2>&1:在腳本開頭執行,後續所有輸出自動導向檔案。
  • command > /dev/null 2>&1:完全靜默執行(丟棄所有輸出)。
  • command 2>&1 >/dev/null:錯誤輸出到終端機,標準輸出丟棄(順序影響結果)。

小結

掌握「0 輸入、1 輸出、2 錯誤」三大檔案描述符,靈活運用 >、>>、2>、2>&1、|,能將簡單指令組合成強大的資料處理管線,是 Linux 命令列高手的核心功力。

Copyright © Windows教程網 All Rights Reserved