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 重定向到我們需要的任何內容。例如,假設你只需要標準輸出,並且應該抑制在標準錯誤上列印的所有錯誤訊息。那是我們使用描述符 12 的時候。

將 STDERR 重定向到/ dev / null
採用前面的示例,

root@server~# ls anotherfile 2>/dev/null
root@server~#

在這種情況下,如果有任何 STDERR,它將被重定向到/ dev / null(一個忽略放入其中的任何內容的特殊檔案),因此你不會在 shell 上獲得任何錯誤輸出。