一、標準輸入,標準輸出與標準錯誤輸出
在linux shell執行命令時,每個進程都和三個打開的文件相聯系,并使用文件描述符來引用這些文件。由于文件描述符不容易記憶,shell同時也給出了相應的文件名:
| 文件 | 文件描述符 |
| 輸入文件—標準輸入 | 0(缺省是鍵盤,為0時是文件或者其他命令的輸出) |
| 輸出文件—標準輸出 | 1(缺省是屏幕,為1時是文件) |
| 錯誤輸出文件—標準錯誤 | 2(缺省是屏幕,為2時是文件) |
標準輸入:從鍵盤輸入數據,即從鍵盤讀入數據。
標準輸出:把數據輸出到終端上。
標準錯誤輸出:把標準錯誤輸出到終端上。
默認的標準輸入指的是鍵盤,默認的標準輸出與標準錯誤輸出指的是屏幕或者是終端。
系統為這三個文件分配了文件標識符fd(file descripter).
在Linux系統下,一切皆是文件,對文件的操作,一般要用到文件標識符。它們的文件標識符,分別為0,1,2。他們的關系如下表:
| 文件描述符 | 名稱 | 通用縮寫 | 默認值 |
|---|---|---|---|
| 0 | 標準輸入 | stdin | 鍵盤 |
| 1 | 標準輸出 | stdout | 屏幕 |
| 2 | 標準錯誤 | stderr | 屏幕 |
1.輸出重定向:
| Command > filename | 把標準輸出重定向到一個新文件中 |
| Command >> filename | 把標準輸出重定向到一個文件中(追加) |
| Command > filename | 把標準輸出重定向到一個文件中 |
| Command > filename 2>&1 | 把標準輸出和錯誤一起重定向到一個文件中 |
| Command 2 > filename | 把標準錯誤重定向到一個文件中 |
| Command 2 >> filename | 把標準輸出重定向到一個文件中(追加) |
| Command >> filename2>&1 | 把標準輸出和錯誤一起重定向到一個文件(追加) |
2.輸入重定向:
| Command < filename > filename2 | Command命令以filename文件作為標準輸入,以filename2文件作為標準輸出 |
| Command < filename | Command命令以filename文件作為標準輸入 |
| Command << delimiter | 從標準輸入中讀入,知道遇到delimiter分界符 |