linux中Shell標準輸出錯誤 >/dev/null 2>&1 分析

來源:互聯網
上載者:User

Shell中可能經常能看到:>/dev/null  2>&1

    eg:sudo kill -9 `ps -elf |grep -v grep|grep $1|awk '{print $4}'` 1>/dev/null 2>/dev/null

命令的結果可以通過%>的形式來定義輸出

/dev/null 代表空裝置檔案

    > 代表重新導向到哪裡,例如:echo "123" > /home/123.txt
    1 表示stdout標準輸出,系統預設值是1,所以">/dev/null"等同於"1>/dev/null"
    2 表示stderr標準錯誤
    & 表示等同於的意思,2>&1,表示2的輸出重新導向等同於1

那麼本文標題的語句:

1>/dev/null 首先表示標準輸出重新導向到空裝置檔案,也就是不輸出任何資訊到終端,說白了就是不顯示任何資訊。

2>&1 接著,標準錯誤輸出重新導向等同於 標準輸出,因為之前標準輸出已經重新導向到了空裝置檔案,所以標準錯誤輸出也重新導向到空裝置檔案。

 

2>&1寫在後面的原因

    格式:command > file 2>&1   ==  command  1> file 2>&1

首先是command > file將標準輸出重新導向到file中, 2>&1 是標準錯誤拷貝了標準輸出,也就是同樣被重新導向到file中,最終結果就是標準輸出和錯誤都被重新導向到file中。

如果改成: command 2>&1 >file

2>&1 標準錯誤拷貝了標準輸出的行為,但此時標準輸出還是輸出到終端。當 >file 後,標準輸出才被重新導向到file,但標準錯誤仍然保留了先前的設定,即保持輸出到終端。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.