Shell中重定向的深入講解

如今參加Linux培訓學習Linux開發技術的小夥伴在不斷的增加,本篇文章扣丁學堂

Linux培訓小編給小夥伴們分享一下Shell中重定向的深入講解,對Linux開發感興趣的小夥伴就隨小編一起學習學習吧。

Shell中重定向的深入講解

扣丁學堂Linux培訓

標準輸入、標準輸出和標準錯誤。

一個程序的的輸入可以來自於鍵盤,也可以來自於文件或者其他設備;同樣的,一個程序也可以將輸出顯示在屏幕或者保存到文件中。這就涉及到標準輸入、標準輸出和標準錯誤。

程序的輸入是標準輸入,默認是鍵盤,用戶可以將其指定為文件或其他設備。

程序的輸出有兩種,即標準輸出和標準錯誤,其中標準輸出是程序的正常輸出、標準錯誤是程序的錯誤輸出。二者默認都被指定為屏幕,用戶可以將其指定為文件或其他設備。

下面的程序從鍵盤讀取輸入,將結果顯示在屏幕上,即標準輸入、標準輸出和標準錯誤都採用默認的設置:

$ ls ~
hello.txt homework name source.list.bk

重定向:

用戶可以對輸入和輸出進行重定向,即指定標準輸入、標準輸出和標準錯誤。

標準輸入使用

$ 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 2019

下面的命令將標準輸入重定向為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

最後想要了解更多內容的小夥伴可以登錄扣丁學堂官網諮詢,扣丁學堂有專業老師制定的Linux學習路線圖輔助學員學習,此外還有與時俱進的Linux視頻教程供大家學習。

Pyhon基礎課程:https://ke.qq.com/course/327534?flowToken=1008607 【掃碼進入Python全棧開發免費公開課】

H5進階課程:https://ke.qq.com/course/387348?flowToken=1008605【掃碼進入前端H5架構師進階VIP體驗課】


分享到:


相關文章: