大多數 UNIX 系統命令從你的終端接受輸入並將所產生的輸出發送回到您的終端。一個命令通常從一個叫標準輸入的地方讀取輸入,默認情況下,這恰好是你的終端。同樣,一個命令通常將其輸出寫入到標準輸出,默認情況下,這也是你的終端。
Unix文件描述符
一般情況下,每個 Unix/Linux 命令運行時都會打開三個文件:
- 標準輸入文件(stdin)
- 標準輸出文件(stdout)
- 標準錯誤文件(stderr)
標準輸入文件(stdin)
stdin的文件描述符爲0,Unix程序默認從stdin讀取數據。
標準輸出文件(stdout)
stdout 的文件描述符爲1,Unix程序默認向stdout輸出數據。
標準錯誤文件(stderr)
stderr的文件描述符爲2,Unix程序會向stderr流中寫入錯誤信息。
空文件(/dev/null)
如果希望執行某個命令,但又不希望在屏幕上顯示輸出結果,那麼可以將輸出重定向到 /dev/null。語法爲:
$ command1 > /dev/null
這樣command1的所有輸出將不會在屏幕上顯示。
重定向方法
使用重定向符號(>, >>, <, <<)進行重定向。
標準輸入重定向(<)
默認情況下,command < file 將stdin 重定向到 file。
Unix 命令也可以從文件獲取輸入,語法爲:
$ command1 < file1
<是用來將符號右側文本的內容作爲左側命令的執行條件。
追加輸入重定向(<<)
<<是方便輸入多行內容到指定文件中。例如:
[aaa@XXXXXXX ~]$ cat >>nsw.txt<<EOF
Hello!
My name is NSW
EOF
[aaa@XXXXXXX ~]$ cat nsw.txt
Hello!
My name is NSW
//將多行內容追加輸入到指定文件中,指定目錄下沒有文件則新建。
標準輸出重定向(>)
默認情況下,command > file 將 stdout 重定向到 file。
Unix 命令也可以將輸入寫入到文件,語法爲:
$ command1 > file
如果文件 file 不存在,文件 file 將被創建。
如果文件 file 已經存在而且有內容,文件 file 的原有內容將被清空。
追加輸出重定向(>>)
Unix 命令也可以將輸入追加到文件,語法爲:
$ command1 >> file
如果文件 file 不存在,文件 file 將被創建。這個時候效果等同於標準輸出重定向。
如果文件 file 已經存在而且有內容,新的輸出將寫到文件 file 的最下面。
重定向舉例
stderr 重定向到 file
$ command 2 > file
stderr 追加到 file
$ command 2 >> file
對 stdin 和 stdout 都重定向
$ command < file1 >file2
command 命令將 stdin 重定向到 file1,將 stdout 重定向到 file2。