和輸出重定向同樣,Unix 命令也能夠從文件獲取輸入. |
和輸出重定向同樣,Unix 命令也能夠從文件獲取輸入,語法爲:html
command1 < file1
這樣,原本須要從鍵盤獲取輸入的命令會轉移到文件讀取內容。linux
注意:輸出重定向是大於號(>),輸入重定向是小於號(< )。shell
實例
接着以上實例,咱們須要統計 users 文件的行數,執行如下命令:htm
$ wc -l users 2 users
也能夠將輸入重定向到 users 文件:blog
$ wc -l < users 2
注意:上面兩個例子的結果不一樣:第一個例子,會輸出文件名;第二個不會,由於它僅僅知道從標準輸入讀取內容。get
command1 < infile > outfile
同時替換輸入和輸出,執行command1,從文件infile讀取內容,而後將輸出寫入到outfile中。input
重定向深刻講解
通常狀況下,每一個 Unix/Linux 命令運行時都會打開三個文件:io
標準輸入文件(stdin):stdin的文件描述符爲0,Unix程序默認從stdin讀取數據。
標準輸出文件(stdout):stdout 的文件描述符爲1,Unix程序默認向stdout輸出數據。
標準錯誤文件(stderr):stderr的文件描述符爲2,Unix程序會向stderr流中寫入錯誤信息。
默認狀況下,command > file 將 stdout 重定向到 file,command < file 將stdin 重定向到 file。table
若是但願 stderr 重定向到 file,能夠這樣寫:file
$ command 2 > file
若是但願 stderr 追加到 file 文件末尾,能夠這樣寫:
$ command 2 >> file
2 表示標準錯誤文件(stderr)。
若是但願將 stdout 和 stderr 合併後重定向到 file,能夠這樣寫:
$ command > file 2>&1 或者 $ command >> file 2>&1
若是但願對 stdin 和 stdout 都重定向,能夠這樣寫:
$ command < file1 >file2
command 命令將 stdin 重定向到 file1,將 stdout 重定向到 file2。
本文原創地址:https://www.linuxprobe.com/shell-input-redirection.html