萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux 數據流重定向完全指南:從基礎到進階文件描述符操作

重定向是 Linux Shell 編程的核心技能,本文系統講解標準流重定向、文件描述符操作、管道與重定向區別、tee 分流、exec 永久重定向、自定義描述符與 /dev/null 黑洞應用。

基礎:三大標準流與文件描述符

FD設備文件說明
0/dev/stdin標準輸入
1/dev/stdout標準輸出
2/dev/stderr標準錯誤

文件描述符是內核為進程維護的打開文件記錄表索引,非負整數。

基本重定向語法

  • cmd > file:標準輸出覆蓋寫入
  • cmd >> file:標準輸出追加寫入
  • cmd < file:標準輸入從文件讀取
  • cmd << EOF ... EOF:Here Document,標準輸入從當前腳本讀取直到 EOF

管道 vs 重定向

管道(|):連接前一命令輸出 → 後一命令輸入,進程間通訊。
重定向(>、<):需文件作媒介建立連接,或直接操作文件描述符。

標準錯誤重定向技巧

# 合併 stderr 到 stdout 再寫文件(順序關鍵)
cmd > file 2>&1
# 或使用 bash 專用 &> 運算子
cmd &> file

tee 同時輸出終端與文件

echo 'hello' | tee hello.log

exec 永久重定向(腳本內全局生效)

exec 1> somefile   # 後續所有標準輸出導向文件
exec 3> somefile # 開啟自定義 FD 3
echo "test" >&3 # 寫入 FD 3
exec 3>&-       # 關閉 FD 3

/dev/null 黑洞裝置

cmd > /dev/null 2>&1  # 完全屏蔽所有輸出

查看當前進程打開的 FD

ls -Al /dev/fd/

精通文件描述符操作,是編寫健壯 Shell 腳本、排查疑難雜症的關鍵能力。

copyright © 萬盛學電腦網 all rights reserved