您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關Shell中如何實現重定向,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
標準輸入、標準輸出和標準錯誤
一個程序的的輸入可以來自于鍵盤,也可以來自于文件或者其他設備;同樣的,一個程序也可以將輸出顯示在屏幕或者保存到文件中。這就涉及到標準輸入、標準輸出和標準錯誤。
程序的輸入是標準輸入,默認是鍵盤,用戶可以將其指定為文件或其他設備。
程序的輸出有兩種,即標準輸出和標準錯誤,其中標準輸出是程序的正常輸出、標準錯誤是程序的錯誤輸出。二者默認都被指定為屏幕,用戶可以將其指定為文件或其他設備。
下面的程序從鍵盤讀取輸入,將結果顯示在屏幕上,即標準輸入、標準輸出和標準錯誤都采用默認的設置:
$ ls ~ hello.txt homework name source.list.bk
重定向
用戶可以對輸入和輸出進行重定向,即指定標準輸入、標準輸出和標準錯誤。
標準輸入使用<進行指定,下面的命令將input文件作為sort命令的輸入,即將sort命令的標準輸入重定向為input文件:
$ cat input zhao qian sun li zhou wu zheng wang $ sort < input li qian sun wang wu zhao zheng zhou
本例中input文件作為sort命令的標準輸入。
使用>重定向標準輸出:
$ ls ~ > output $ cat output hello.txt homework input name output source.list.bk
如上所示,ls ~的標準輸出被重定向為output,因此其輸出被寫入output文件。
需要注意的是,如果output不存在,將自動創建output文件;如果output存在,那么將清空output的內容,并寫入新的內容。
如果只是想在輸出文件的已有內容的末尾追加,可以使用>>:
$ date >> output $ cat output hello.txt homework input name output source.list.bk Sat Jun 30 18:18:53 CST 2018
下面的命令將標準輸入重定向為input,將標準輸出重定向為output:
$ sort < input > output # 覆蓋output內容 $ sort < input >> output # 在output末尾追加內容
文件描述符
每個輸入源和輸出地都有一個描述符,標準輸入的描述符為0,標準輸出的描述符為1,標準錯誤的描述符為2。
使用0<重定向標準輸入,事實上,由于程序的默認重定向輸入即為標準輸入,所以下面的兩條命令是等價的:
$ sort < input $ sort 0< input
同樣的,程序的默認重定向輸出為標準輸出,所以下面的兩條命令也是等價的:
$ ls > output $ ls 1> output
下面的命令將標準輸入重定向為input文件,標準輸出重定向為output文件(追加),將標準錯誤重定向為error文件:
$ sort < input 1>> output 2> error
組合標準輸出和標準錯誤
下面的命令將標準輸出重定向為output文件,標準錯誤仍然顯示在屏幕上:
$ sort < input > output
下面的命令將標準輸出重定向為output文件,將標準錯誤重定向為error文件:
$ sort < input > output 2> error
下面的命令將標準輸出重定向為output文件,使用2>&1將標準錯誤重定向為標準輸出:
$ sort < input > output 2>&1
上面的例子中,標準輸出和標準錯誤都會被重定向為output文件。
注意,下面的命令將導致標準輸出和標準錯誤的相互覆蓋,因此不可使用:
$ sort < input > output 2> output
上述就是小編為大家分享的Shell中如何實現重定向了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。