[Linux] 原來 shell 有 |& 和 >& 這幾個轉向指令可以用

[Linux] 原來 shell 有 |& 和 >& 這幾個轉向指令可以用

平常在寫 shell script 時,為了將 stdout 和 stderr 都可以導給下一個程式,

通常會這麼寫:

./test.sh > result 2> result

 

今天在查指令的時候,才注意到有這幾個轉向指令可以用:

(參考 Linux / Unix Command: exec)

  – |&: 將 stdout/stderr 都導到下一個程式的 stdin

  – >&: 將 stdout/stderr 寫入到檔案

  – >>&: 將 stdout/stderr 附加到檔案

 

因此,像上面的那段指令,就可以改寫成:

./test.sh >& result

 

而像下面的指令,就可以同時在 test.sh 輸出的 stdout/stderr 訊息搜尋 “access” 這個字:

./test.sh |& egrep "access"

 

只不過 |&, >&, >>& 這幾個轉向指令似乎不是每一種 shell 版本都支援,

像我的 Mac 上不支援 >>&,但支援 |& 和 >&。

而在我們一台 Linux appliance 上是全都不支援的~使用前要注意囉~

 

 

(本頁面已被瀏覽過 559 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料