一、什麼是數據流重定向
在說數據流重定向之前,先來說說數據流的概念吧。數據流分為三種:標准輸入(stdin),標准輸出(stdout)和標准錯誤輸出(stderr)。
簡單來說,標准輸出指的是命令執行所回傳的正確信息,而標准錯誤輸出指的是命令執行失敗後,所回傳的錯誤信息。這些信息默認是打印在屏幕上的。
那麼什麼時數據流重定向呢?從字面上理解就是改變數據流的流向,使之流向指定的文件或設備。例如,把執行命令所回傳的正確信息(標准輸出信息)流向一個文件,而將所回傳的錯誤信息(標准錯誤輸出)流向別一個文件,並把這兩個文件的信息保存下來,而在屏幕上不出現任何該命令執行所回傳的信息。
二、數據流重定向的實現
1、數據流重寫向的分類
在Linux中利用shell實現數據流重定向是非常簡單的,下面來介紹3種數據流的重定向。
1)標准輸入(stdin):代碼為0,使用<或者<<
2)標准輸出(stdout):代碼為1,使用>或者>>
3)標准錯誤輸出(stderr):代碼為2,使用2>或者2>>
看到這裡,你可能還是很疑惑,那個代碼有什麼作用,<和<<有什麼不同,>和>>又有什麼不同?
2、代碼的作用
那個代碼是為了區分命令中所使用的不同的數據流而設定的,例如,0代碼的就是標准輸入。注意在默認情況下,>和>>分別表示1>和1>>,而<和<<分別表示0<和0<<。
3、標准輸出數據流重定向詳解
在說輸入之前,我先跟大家說說輸出吧,一般使用例子都能讓人更容易明白一樣東西是怎麼樣使用的。所以請看下面的例子,在當前目錄下,已存在一個名為StreamTest.txt的文本件,我使用cat命令來進行測試,我們知道,cat命令會把文本文件中的內容輸出到屏幕上來。請看下面的例子:
本文URL:http://www.bianceng.cn/OS/Linux/201410/45627.htm
無論是正確的信息還是錯誤的信息,它都能吃掉。
五、何時使用數據流重定向
既然我們知道了數據流的重定向,那麼什麼時候要使用數據流重定向呢?數據流重定向一般應用於:
1、屏幕輸出的信息很重要,而且我們需要將它保存下來;
2、後台執行中的程序,不希望它干擾屏幕正常的輸出結果;
3、一些系統的例行命令的執行結果,希望它能夠保存下來;
4、一些執行命令的可能已知出錯信息時,想以“2>/dev/null”將它屏蔽掉;
5、錯誤信息和正確信息需要分別輸出;
本文URL:http://www.bianceng.cn/OS/Linux/201410/45627.htm