在 shell 程式中,最常使用的 FD (file descriptor) 大概有三個, 分別是:
0 是一個文件描述符,表示標准輸入(stdin)
1 是一個文件描述符,表示標准輸出(stdout)
2 是一個文件描述符,表示標准錯誤(stderr)
在標准情況下, 這些FD分別跟如下設備關聯:
stdin(0): keyboard 鍵盤輸入,並返回在前端
stdout(1): monitor 正確返回值 輸出到前端
stderr(2): monitor 錯誤返回值 輸出到前端
1>&2 正確返回值傳遞給2輸出通道 &2表示2輸出通道
如果此處錯寫成 1>2, 就表示把1輸出重定向到文件2中.
2>&1 錯誤返回值傳遞給1輸出通道, 同樣&1表示1輸出通道.
>是重定向符,就是把前面輸出的內容重定向到后面指定的位置
echo
"一些內容"
> filename.txt
>前是可以加數字來說明把什么內容重定向到文件中,默認是把標准輸出重定向到文件中,所以下面這個例子和上面那個是一樣的(例2):
echo
"一些內容"
1> filename.txt
& 是一個描述符,如果1或2前不加&,會被當成一個普通文件。
1>&2 意思是把標准輸出重定向到標准錯誤.
2>&1 意思是把標准錯誤輸出重定向到標准輸出。
&>filename 意思是把標准輸出和標准錯誤輸出都重定向到文件filename中