iT邦幫忙

DAY 10
1

openSUSE Linux 30 天系列 第 10

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 ~


上一篇
2014IT鐵人賽-09-shell 變數練習
下一篇
2014IT鐵人賽-11-使用者管理
系列文
openSUSE Linux 30 天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言