輸入&輸出重定向符號 (Input & Output Streams) | Linux

輸入&輸出重定向符號 (Input & Output Streams)是許多程式在運行時,輸出log或是判斷發生error的常用方式,這個章節的技巧對於日常的系統運維可說是至關重要。

名稱 syntax 用途
standard out (stdout) 1> 通常用在輸出正常訊息
standard error (stderr) 2> 通常用在輸出錯誤訊息
standard in (stdin) < 從文檔中讀書資料

輸入重定向(stdin):

是一個標準輸入重定向符號,它的作用是把命令的輸出寫入到指定的文件中。通常,用戶通過鍵盤提供輸入。例如,使用cat命令連接文件時,內容是從輸入重定向讀取的。

輸出重定向(stdout和stderr):

輸出重定向處理命令生成的數據。標準輸出重定向(stdout)顯示常規命令輸出。

標準錯誤串流(stderr):

用於通信錯誤消息和警報。重定向和操作這些錯誤信息的去向。

範例:

# 將stdout重定向到文件
ls -lsah > output.txt

# 將stdout和stderr都重定向到文件
ls -lsah > output.txt 2>&1

# 如果輸出正確就輸出到ls.txt檔案,如果有錯誤就輸出到ls-error.txt中(替換,會覆蓋掉原本的內容)
ls -lsah 1> ls.txt 2> ls-error.txt

# 如果輸出正確就輸出到ls.txt檔案,如果有錯誤就輸出到ls-error.txt中(不替換,向下添加)
ls -lsah 1>> ls.txt 2>> ls-error.txt

# 不管對或是錯都往ls.txt輸出(替換,會覆蓋掉原本的內容)
ls -lsah &> ls.txt

# 不管對或是錯都往ls.txt輸出(不替換,向下添加)
ls -lsah &>> ls.txt

# 如果不想要保存可以丟到 /dev/null,就像丟到黑洞裡,實際上輸出的東西並不會被保存
ls -lsah &>> /dev/null