當shell啟動,它繼承三個文件:stdin、stdout、stderr,標准輸入通常來自鍵盤,標准輸出和標准錯誤通常是屏幕。
標准輸入/輸出/錯誤的文件描述符為0、1、2
< 重定向輸入
<& 重定向輸入,後接數字格式的文件描述符
> 重定向輸出
>> 追加輸出
2> 重定向錯誤
&> 重定向錯誤和輸出,後接文件名
>& 重定向錯誤和輸出,後接文件名或數字格式的文件描述符
2>&1 重定向標准錯誤到標准輸出
1>&2 重定向標准輸出到標准錯誤
>| 重定向輸出時覆蓋noclobber,即如果文件存在直接覆蓋文件
<>filename 如果是一個設備文件,就把這個文件作為標准輸入和標准輸出
1) 將標准錯誤重定向到文件
$cc prog.c 2>errfile
2) 將標准輸出重定向到文件,標准錯誤重定向到空設備文件
$cc prog.c >logfile 2>/dev/null
3) 將標准輸出和標准錯誤都定向到文件或文件描述符
$cc prog.c &> logfile //必須是文件名
$cc prog.c >& logfile //可以是文件名或數字格式的文件描述符
$cc prog.c >& 1 //將標准輸出和標准錯誤重定向到標准輸出,標准輸出的文件描述符為1
4) 將標准輸出重定向到文件,將標准錯誤重定向到標准輸出定向的設備
$cc prog.c >logfile 2>&1
等效於
$cc prog.c >& logfile