1. 程式人生 > >Linux中的數據重定向

Linux中的數據重定向

file 錯誤 輸入 ack 文件內容 錯誤輸出 怎麽 顯示 錯誤數據

重定向即指:將數據傳送輸出到別的地方,如設備、文件等等。那就涉及到將什麽數據傳送到什麽地方的問題。

在linux中命令執行的起源和結果說起,看下圖:

技術分享圖片

Standard input和Standard error都會輸出到屏幕上,這樣會將屏幕搞的非常混亂,且又是輸出內容過多也不易於閱讀。甚至有時候的輸出內容非常重要需要保存,這是該怎麽辦??

答案是:數據重定向,將輸出內容導入到別的地方。

linux中數據重定向的特殊符號:

  • 標準輸入:代碼為0,使用<或者<<
  • 標準輸出:代碼為1,使用1>或者1>>,也可以使用默認表示>或者>>
  • 標準錯誤輸出:代碼為2,使用2>或者2>>

>和>>的區別在於,輸出內容重導向目的地的方式不一樣:

>:以覆蓋目的地原有數據的方式重導向
>>:以追加的方式重導向

ls /etc > list

如以上的將列出etc目錄下的文件將其寫入list文件。

  1. 如果list文件不存在則創建
  2. 清除list文件內容
  3. 將ls的標準輸出寫入list中

如果不清空list,則以追加的方式寫入,使用>>

1.只需要正確的數據

使用/dev/null垃圾桶

#將find的結果中錯誤的輸出丟棄,只顯示正確的結果。避免錯誤數據的幹擾
find /home -name .bashrc 2> /dev/null

2.既需要正確的輸出又需求錯誤的輸出數據

find /home -name .bashrc > list 2>&1
find /home -name .bashrc &> list

以上將標準輸出和標準錯誤都寫入list

3.標準輸入<和<<的使用

既然使用<,肯定需要輸入的來源。 < file的方式,可以將file的內容作為標準輸入。

cat > back <~/.bashrc

以上同時利用 > 和 <(輸入和輸出重導向)備份.bashrc文件。

cat > list

以上命令將會將屏幕輸入(標準輸入)作為輸出重導向文件list,然後使用ctrl+d退出。但是可以如下寫法:

cat > list << "eof"

這樣只要屏幕上輸入"eof"即可退出。<<代表結束輸入。

Linux中的數據重定向