星期四, 9月 25, 2014

2014IT鐵人賽-10-重導向練習

2014IT鐵人賽-10-重導向練習


今天一樣使用 EasyCloud  雲端簡單龍的帳戶, 那就登入 https://gemini.nchc.org.tw/ 來開始練習openSUSE 基礎指令吧.


今天練習重導向的練習, 來控制資訊的輸出入


筆記部份:


在Linux 裏面, 主要有三種輸出入的狀況,分別是:
標準輸入;代碼為 0 ;或稱為 stdin ; 使用的方式為   <
標準輸出:代碼為 1 ;或稱為 stdout;使用的方式為 1>
錯誤輸出:代碼為 2 ;或稱為 stderr; 使用的方式為 2>


在符號的使用上


> 輸出導向(新的會覆蓋舊的)
>> 以附加方式輸出導向(新的會附加舊的後面)
< 輸入導向


那該如何知道是成功的執行還是錯誤輸入呢?
這個時候可以去 echo  $?  ( Return value 回覆值, 一般來說正確為0, 不是0代表錯誤 )

開始練習吧


Lab: >


#cd   /home/max
#ls  /
#echo  $? <$?為回覆值,通常0代表成功, ls / STDOUT>
#ls  /123
#echo  $? <$?為回覆值,通常0代表成功, ls /123 STDERR>


#ls  /  >  ls.txt         <ls / 的結果導向到ls.txt ">" 預設針對STDOUT >
#/bin/ls
#cat ls.txt <請觀察內容>


#ls  /123  >  ls.txt <ls /123 訊息為標準錯誤, 故無法導向到ls.txt>
#cat  ls.txt <請觀察內容, 空白,">" 新的內容會覆蓋舊的 >


#ls  /123  2>  ls.txt <ls /123 STDERR 導向到ls.txt, 2> 指定STDERR>
#cat   ls.txt


Q: 若執行#ls  /   /123 會同時出現 STDOUT and STDERR
試問要如何將STDOUT and STDERR 導向 ls.txt?
Hint:  2>&1
Hint:  1>&2

Ans:  利用 & 合併資料流
#ls  /   /123  >   ls.txt  2>&1



Lab: >> , <  


#date
#date > df.txt <date 結果導向df.txt>
#cat  df.txt
#df  -h  >  df.txt <df -h結果導向df.txt,因使用">" 故新的會覆蓋舊的>
#cat  df.txt


#date   >>  df.txt <使用附加的方式將date結果導向 df.txt >
#cat  df.txt <使用 ">>" 新的訊息會附加在舊的後面 >


#mail  root  -s  "disk free" < df.txt <df.txt 為信件內容寫信給root,主旨為disk free >
#mail <收信,請按信件編號觀察, q 離開>




Fun with Day 10 ~

沒有留言: