Linux中的數據重定向
阿新 • • 發佈:2018-08-04
file 錯誤 輸入 ack 文件內容 錯誤輸出 怎麽 顯示 錯誤數據
重定向即指:將數據傳送輸出到別的地方,如設備、文件等等。那就涉及到將什麽數據傳送到什麽地方的問題。
在linux中命令執行的起源和結果說起,看下圖:
Standard input和Standard error都會輸出到屏幕上,這樣會將屏幕搞的非常混亂,且又是輸出內容過多也不易於閱讀。甚至有時候的輸出內容非常重要需要保存,這是該怎麽辦??
答案是:數據重定向,將輸出內容導入到別的地方。
linux中數據重定向的特殊符號:
- 標準輸入:代碼為0,使用<或者<<
- 標準輸出:代碼為1,使用1>或者1>>,也可以使用默認表示>或者>>
- 標準錯誤輸出:代碼為2,使用2>或者2>>
>和>>的區別在於,輸出內容重導向目的地的方式不一樣:
>:以覆蓋目的地原有數據的方式重導向
>>:以追加的方式重導向
ls /etc > list
如以上的將列出etc目錄下的文件將其寫入list文件。
- 如果list文件不存在則創建
- 清除list文件內容
- 將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中的數據重定向