Linux 資料流重定向

2021-09-24 09:02:34 字數 2047 閱讀 9592

一般來說,如果你要執行乙個命令,這個命令可能會由檔案讀入資料,經過處理之後,再將資料輸出到螢幕上。

標準輸出與標準錯誤

簡單地說,標準輸出指的是命令執行所回傳的正確的資訊,而標準錯誤輸出可以理解為命令執行失敗後,所回傳的錯誤資訊。這兩個命令預設都是輸出到螢幕上來,所以螢幕當然是混亂的。那能不能通過某些機制將這兩條資料分開呢?當然可以。這就是資料流重定向的功能。

1>:以覆蓋的方法將正確的資料輸出到指定文檔案或裝置上。

1>>:以累加的方法將正確的資料輸出到指定文檔案或裝置上。

2>:以覆蓋的方法將錯誤的資料輸出到指定文檔案或裝置上。

2>>:以累加的方法將錯誤的資料輸出到指定文檔案或裝置上。

注意:「1>>」以及「2>>」之間是沒有空格的。

示例:將stdout和stderr分別存到不同的檔案中去。

find /home -name .bashrc >list_right  2

>list_error

命令執行完畢,正確的列印資訊就會輸出到list_right這個檔案,而錯誤的列印資訊就會輸出到list_error這個檔案中去了。

注意:如果list_right不存在,系統會自動建立。

想象一下,如果唔知道錯誤資訊會發生,所以想要直接將錯誤資訊丟棄掉呢?這個時候黑洞裝置/dev/null就很重要了。它可以吃掉任何導向這個裝置的資訊。

示例:將上述的例子修正一下。將錯誤的資料丟棄,螢幕上只顯示正確的資料。

find /home -name .bashrc 2

>

/dev/null

再想象一下,如果我要將正確的和錯誤的資訊都寫入到乙個檔案中去呢?這時候就要採用特殊的寫法了。

示例:將命令的資料全部寫入名為list的檔案中

find /home -name .

/bashrc >list 2

> list //錯誤

find /home -name .

/bashrc >list 2

>&1

//正確

find /home -name .

/bashrc &

>list //正確

第一行錯誤的原因是:由於兩條資料寫入同乙個檔案,又沒有使用特殊的語法,所以可能就會造成資料交叉寫入,造成次序的混亂。一般比較習慣於第二種寫法。

簡單的說法,就是將原本需要由鍵盤輸入的資料改由檔案內容而替代。

由於加入》在cat後,所以catfile會被主動建立,而內容就是鍵盤上輸入這這些字母了。

那能不能用純文字檔案代替鍵盤的輸入呢?

執行完上述命令,我們發現這兩個檔案大小幾乎一模一樣,幾乎像是使用cp複製的一般。

理解《之後,我們再來看一下《的使用

舉例來講,我們要用cat直接將輸入的資訊輸入到catfile檔案中去,並且在遇到「eof」的時候,表示輸入結束。

我們發現,最後輸入的eof並沒有輸入到catfile檔案中去,它只是代表著本次輸入的結束。

Linux資料流重定向

開篇 當在執行shell命令時,常見的就是輸出在螢幕上,但是我們有些時候需要儲存輸出結果或者丟棄輸出錯誤,就需要重定向了。什麼是資料流重定向 當我們執行乙個命令 命令不也是程式嘛 可能由檔案或者鍵盤讀入資料,經過處理之後,再將結果輸出到螢幕上。圖中,standard output與standard ...

Linux資料流重定向

在我們日常linux命令操作中,命令執行的輸入一般是鍵盤輸入,輸出一般是輸出到螢幕,但有時候,我們可能會去讀取檔案裡但資料作為輸入,或者將輸出儲存到檔案裡 比如日誌檔案 這個時候就需要用到資料流重定向。所謂資料流重定向,就是 1 將某個命令執行後應該要出現在螢幕上的資料傳輸到其它地方,例如檔案或者諸...

Linux 資料流重定向

1.三種資料流重定向 1 標準輸入 stdin 為0,使用0 或0 2 標準輸出 stdout 為1,使用1 或1 其中 1可以省略 3 標準錯誤輸出 stderr 為2,使用2 或2 2.標準輸出 stdout 重定向 我們知道linux中,cat命令可以將檔案內容輸出到螢幕。如下所示 我們可以使...