【Linux入門學習之】資料流重新導向

來源:互聯網
上載者:User

Linux中資料流重新導向的意思是將某個命令執行後應該要出現在螢幕上的資料轉送到其他地方,例如檔案或裝置之類。


一、stadard output與standard error output

首先介紹一下命令執行過程的資料轉送情況:


圖中的standard output和standard error output分別代表“標準輸出”和“標準錯誤輸出”。這兩個命令預設都是輸出到螢幕中來。

標準輸出:命令執行所回傳的正確的資訊。

標準錯誤輸出:命令執行失敗後,所回傳的錯誤資訊。

我們通過資料流重新導向功能可以將這兩條資訊分開,分別傳送到其他的檔案或裝置中去。

傳送使用的特殊字元是:

標準輸入(stdin):代碼為0,使用<或<<;

標準輸出(stdout):代碼為1,使用>或>>;

標準錯誤輸出(stderr):代碼為2,使用2>或>>。

 

範例:

命令ll /:螢幕會顯示檔案名稱資訊。

而ll / > /tmp/fileinfo:螢幕無任何資訊。

ll /tmp/fileinfo:可以發現有一個新檔案被建立(檔案不存在時),裡面的內容就是原本應該顯示在螢幕上的資訊。

要注意的是,如果我再次使用重新導向功能>:ll /home > /tmp/fileinfo,將資訊重新導向到檔案/tmp/info中,則原有的資訊會被覆蓋(檔案已存在時)。如果要將資料疊加而不是覆蓋,那使用符號>>就可以了。

 

stdout代碼為1,當我們僅用>和>>預設就是1>,1>>。而當我們要重新導向standard error output資料時,用2>和2>>即可。其意義和stdout一樣。

 

下面再來看一個範例:

find /home –name .bashrc> list

可以發現list裡面儲存了正確的資訊,但是錯誤的資訊還是顯示在了螢幕上面。那麼如果要將正確資訊和錯誤資訊分別存入不同的檔案呢,應該怎麼辦?

find /home –name.bsdhrc > list_right 2> list_error

這樣就可以了。


二、/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       //正確

第一行錯誤的原因是:兩條資料同時寫入一個檔案,又沒有使用特殊寫法,此時兩條資料會交叉寫入該檔案內,造成次序錯亂。最終產生的檔案裡面資料排列會很混亂。

 

三、standard input:<和<<

可以將原本由鍵盤輸入的資料由檔案替代。

範例:

cat > catfile< ~/.bashrc

可以發現catfile裡面的內容就是~/.bashrc裡面的內容。

而<<代表的是結束輸入的意思。

範例:我要用cat直接將輸入的資訊輸出到catfile中,而且由鍵盤輸入eof結束。可以這樣做:

cat > catfile<< “eof”

> This is atest

> OK,I willstop.

> eof

這樣就不必使用Ctrl+d來結束。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.