Linux的指令行為我們提供了管道和重定向機制,通過管道和重定向就可以完成多指令協作。
指令行shell的資料流有以下三種定義:
名稱 | 說明 | 編号 | 預設 |
STDIN | 标準輸入 | 鍵盤 | |
STDOUT | 标準輸出 | 1 | 終端 |
STDERR | 标準錯誤 | 2 | 終端 |
指令通過STDIN接收參數或資料,通過STDOUT輸出結果或通過STDERR輸出錯誤,通過管道和重定向可以控制CLI的資料流
如果将輸出重定向到/dev/null就不會有輸出了(這個通常用于在結果中過濾錯誤資訊)
重定向:
> 将STDOUT重定向到檔案(覆寫),例:echo "xxx" > outfile
>> 将STDOUT重定向到檔案(追加),例:echo "xxx" >> outfile
2> 将STDERR重定向到檔案(覆寫),例:ls nothere 2> errout
2>&1 将STDERR與STDOUT結合,例:ls nothere 2>&1 alloutput
< 重定向STDIN, 例:grep xxx < /etc/passwd
管道:
| (一個豎線):将一個指令的STDOUT(前一個指令)作為另一個指令(後一個指令)的STDIN,例:ls -l | grep xxx
管道通常用來組合不同的指令,以實作一個複雜的功能,重定向通常用來儲存某指令的輸出資訊或錯誤資訊,可以用來記錄執行結果或儲存錯誤資訊到一個指定的檔案。