shell指令碼中 dev null 2 1詳解

2021-08-07 20:03:14 字數 1066 閱讀 9102

1,可以將/dev/null看作"黑洞". 它非常等價於乙個只寫檔案. 所有寫入它的內容都會永遠丟失. 而嘗試從它那兒讀取內容則什麼也讀不到. 然而, /dev/null對命令列和指令碼都非常的有用.

首先shell中0代表標準輸入 ;1代表標準輸出;2代表標準錯誤輸出

用處:禁止標準輸出.    1 cat $filename >/dev/null   # 檔案內容丟失,而不會輸出到標準輸出. 

禁止標準錯誤.2>/dev/null 這樣錯誤資訊[標準錯誤]就被丟掉了. 

2, 1>/dev/null 2>&1的含義 

> 代表重定向到**,例如:echo "123" > /home/123.txt 

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

分二步解析:第一步 1>/dev/null 的意思就是禁止標準輸出,系統預設就是1標準輸出,所以可以這樣寫》/dev/null ;

第二步 2>&1 的意思就是把標準錯誤輸出重定向到標準輸出,由於禁止了標準輸出,所以也就不會輸出標準錯誤輸出。

那麼/dev/null 2>&1語句含義: 

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

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

command > file 2>file語義;

command > filecommand表示把標準輸出傳送到file中

2>file 表示把標準錯誤輸出也傳送給file

這樣就出現了file檔案通過管道訪問了2次,存在io效率

從io效率上,command > file 2>file的效率要比/dev/null 2>&1的命令效率要低,所以在編寫shell指令碼的時候,較多的時候我們會用

command > file 2>&1

這樣的寫法

shell指令碼中》 dev null 和 2 1

shell中可能經常能看到 dev null 2 1 命令的結果可以通過 的形式來定義輸出 dev null 代表空裝置檔案 代表重定向到 例如 echo 123 home 123.txt 1 表示stdout標準輸出,系統預設值是1,所以 dev null 等同於 1 dev null 2 表示s...

Shell指令碼中的 Dev Null 用途

dev null 是乙個特殊的裝置檔案,它丟棄一切寫入其中的資料 可以將它 視為乙個黑洞,它等效於只寫檔案,寫入其中的所有內容都會消失,嘗試從中讀取或輸出不會有任何結果,同樣,dev null 在命令列和指令碼中都非常有用。dev null 是乙個特殊的裝置檔案,它丟棄一切寫入其中的資料 可以將它 ...

shell指令碼中 dev null 的用法小結

dev null是乙個特殊的裝置檔案,它丟棄一切寫入其中的資料 可以將它 視為乙個黑洞,它等效於只寫檔案,寫入其中的所有內容都會消失,嘗試從中讀取或輸出不會有任何結果,同樣,dev null在命令列和指令碼中都非常有用 dev null通常被用於丟棄不需bmkmkuq要的輸出流,或作為用於輸入流的空...