ref.鳥哥
ref.http://dywang.csie.cyut.edu.tw/dywang/linuxProgram/node20.html
資料流重導向
標準輸入(stdin) :代碼為 0 ,使用 < 或 << ;標準輸出(stdout):代碼為 1 ,使用 > 或 >> ;
標準錯誤輸出(stderr):代碼為 2 ,使用 2> 或 2>> ;
>> 為 append
> 為覆寫
1> :是將正確的資料輸出到指定的地方去
2> :是將錯誤的資料輸出到指定的地方去
若只下> 則預設等義>1
將資料輸出到不同的地方去呢?可以這麼寫:
find /home -name testing > list_right 2> list_error
將錯誤的資訊丟掉!
find /home -name testing > list_right 2> /dev/null
find /home -name testing > list 2> list <==錯誤寫法
find /home -name testing > list 2>&1 <==正確寫法
or
find /var -name run &>file
請特別留意這一點呢!同時寫入同一個檔案需要使用 2>&1 才對呦!
(這邊我的理解為 把 stderr導向stdout 的address 2>&1) 如此一來 stderr 就變為stdout了
方便的make linux
alias mkl='make linux vmimg 2>&1 | grep -i "error:\|correct"'
連續命令
指令間以分號( ; )隔開:連續執行指令。[root@linux ~]# sync; sync; shutdown -h now
指令間以 && 隔開:前面指令執行結果正確,就接著執行後續的指令,否則就略過。
[root@linux ~]# ls /tmp && touch /tmp/testingagin
## 目錄/tmp存在,所以/tmp/testingagin會被建立。
[root@linux ~]# ls /csie && touch /csie/test
## 目錄/csie不存在,所以touch /csie/test不會被執行。
指令間以 || 隔開:前一個指令有錯誤時,後面的指令才被執行。
[root@linux ~]# ls /tmp/csieing || touch /tmp/csieing