STDIN STDOUT 和 STDERR 解釋道
命令有一個輸入(STDIN)和兩種輸出,標準輸出(STDOUT)和標準錯誤(STDERR)。
例如:
STDIN
root@server~# read
Type some text here
標準輸入用於為程式提供輸入。 (這裡我們使用內建 read
來讀取 STDIN 中的一行。)
STDOUT
root@server~# ls file
file
標準輸出通常用於命令的正常輸出。例如,ls
列出檔案,因此檔案將傳送到 STDOUT。
STDERR
root@server~# ls anotherfile
ls: cannot access 'anotherfile': No such file or directory
標準錯誤(顧名思義)用於錯誤訊息。由於此訊息不是檔案列表,因此將其傳送到 STDERR。
STDIN,STDOUT 和 STDERR 是三個*標準流。*它們通過數字而不是名稱來識別 shell:
0 =標準輸入
1 =標準輸出
2 =標準誤差
預設情況下,STDIN 連線到鍵盤,STDOUT 和 STDERR 都出現在終端中。但是,我們可以將 STDOUT 或 STDERR 重定向到我們需要的任何內容。例如,假設你只需要標準輸出,並且應該抑制在標準錯誤上列印的所有錯誤訊息。那是我們使用描述符 1
和 2
的時候。
將 STDERR 重定向到/ dev / null
採用前面的示例,
root@server~# ls anotherfile 2>/dev/null
root@server~#
在這種情況下,如果有任何 STDERR,它將被重定向到/ dev / null(一個忽略放入其中的任何內容的特殊檔案),因此你不會在 shell 上獲得任何錯誤輸出。