Shell標準輸出、標準錯誤 >/dev/null 2>&1

shell中可能常常能看到:>/dev/null  2>&1 php

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

命令的結果能夠經過%>的形式來定義輸出spa

  • /dev/null 表明空設備文件
    get

  • > 表明重定向到哪裏,例如:echo "123" > /home/123.txtclass

  • 1 表示stdout標準輸出,系統默認值是1,因此">/dev/null"等同於"1>/dev/null"awk

  • 2 表示stderr標準錯誤file

  • & 表示等同於的意思,2>&1,表示2的輸出重定向等同於1終端


那麼本文標題的語句:語法

1>/dev/null 首先表示標準輸出重定向到空設備文件,也就是不輸出任何信息到終端,說白了就是不顯示任何信息。grep

2>&1 標準錯誤輸出重定向等同於 標準輸出,由於以前標準輸出已經重定向到了空設備文件,因此標準錯誤輸出也重定向到空設備文件。


/////////////////////////////////////////////////////////////////////////////////////////////////////////

腳本只使用標準輸入、標準輸出和標準錯誤

        Shell會自動爲咱們打開和關閉 0、一、2 這三個文件描述符,咱們不須要顯式地打開或關閉它們。

        標準輸入是命令的輸入,默認指向鍵盤;

        標準輸出是命令的輸出,默認指向屏幕;

        標準錯誤是命令錯誤信息的輸出,默認指向屏幕。


若是沒有顯式地進行重定向,命令經過文件描述符0從屏幕讀取輸入,經過文件描述符1和2將輸出和錯誤信息輸出到屏幕。但若是咱們想從其餘文件(再次強調,I/O設備在Unix/Linux中也是文件)讀取輸入或產生輸出,就須要對0、一、2使用重定向了。其語法以下:

command < filename                         把標準輸入重定向到filename文件中

command 0< filename                       把標準輸入重定向到filename文件中


command > filename                         把標準輸出重定向到filename文件中(覆蓋)

command 1> fielname                       把標準輸出重定向到filename文件中(覆蓋)


command >> filename                       把標準輸出重定向到filename文件中(追加)

command 1>> filename                     把標準輸出重定向到filename文件中(追加)


command 2> filename                       把標準錯誤重定向到filename文件中(覆蓋)

command 2>> filename                     把標準輸出重定向到filename文件中(追加)


command > filename 2>&1               把標準輸出和標準錯誤一塊兒重定向到filename文件中(覆蓋)

command >> filename 2>&1             把標準輸出和標準錯誤一塊兒重定向到filename文件中(追加)


command < filename >filename2        把標準輸入重定向到filename文件中,把標準輸出重定向到filename2文件中

command 0< filename 1> filename2   把標準輸入重定向到filename文件中,把標準輸出重定向到filename2文件中


重定向的使用有以下規律:

1)標準輸入0、輸出一、錯誤2須要分別重定向,一個重定向只能改變它們中的一個。

2)標準輸入0和標準輸出1能夠省略。(當其出現重定向符號左側時)

3)文件描述符在重定向符號左側時直接寫便可,在右側時前面加&。

4)文件描述符與重定向符號之間不能有空格!




原文地址:Shell標準輸出、標準錯誤 >/dev/null 2>&1

相關文章
相關標籤/搜索