Shell 輸入重定向

和輸出重定向同樣,Unix 命令也能夠從文件獲取輸入.

Shell 輸入重定向Shell 輸入重定向
和輸出重定向同樣,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

相關文章
相關標籤/搜索