shell中可能經(jīng)常能看到:>/dev/null ?2>&1
eg:sudo kill -9 `ps -elf |grep -v grep|grep $1|awk '{print $4}'` 1>/dev/null 2>/dev/null
命令的結(jié)果可以通過%>的形式來定義輸出
/dev/null 代表空設(shè)備文件
> 代表重定向到哪里,例如:echo "123" > /home/123.txt
1 表示stdout標(biāo)準(zhǔn)輸出娜氏,系統(tǒng)默認(rèn)值是1抬探,所以">/dev/null"等同于"1>/dev/null"
2 表示stderr標(biāo)準(zhǔn)錯(cuò)誤
& 表示等同于的意思硫戈,2>&1,表示2的輸出重定向等同于1
那么本文標(biāo)題的語句:
1>/dev/null 首先表示標(biāo)準(zhǔn)輸出重定向到空設(shè)備文件罚随,也就是不輸出任何信息到終端玉工,說白了就是不顯示任何信息。
2>&1 接著毫炉,標(biāo)準(zhǔn)錯(cuò)誤輸出重定向等同于?標(biāo)準(zhǔn)輸出瓮栗,因?yàn)橹皹?biāo)準(zhǔn)輸出已經(jīng)重定向到了空設(shè)備文件,所以標(biāo)準(zhǔn)錯(cuò)誤輸出也重定向到空設(shè)備文件瞄勾。
/////////////////////
腳本只使用標(biāo)準(zhǔn)輸入费奸、標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤
Shell會(huì)自動(dòng)為我們打開和關(guān)閉0、1进陡、2這三個(gè)文件描述符愿阐,我們不需要顯式地打開或關(guān)閉它們。標(biāo)準(zhǔn)輸入是命令的輸入趾疚,默認(rèn)指向鍵盤缨历;標(biāo)準(zhǔn)輸出是命令的輸出,默認(rèn)指向屏幕糙麦;標(biāo)準(zhǔn)錯(cuò)誤是命令錯(cuò)誤信息的輸出辛孵,默認(rèn)指向屏幕。
如果沒有顯式地進(jìn)行重定向赡磅,命令通過文件描述符0從屏幕讀取輸入魄缚,通過文件描述符1和2將輸出和錯(cuò)誤信息輸出到屏幕。但如果我們想從其他文件(再次強(qiáng)調(diào),I/O設(shè)備在Unix/Linux中也是文件)讀取輸入或產(chǎn)生輸出冶匹,就需要對0习劫、1、2使用重定向了嚼隘。其語法如下:
command < filename?????????????????????????把標(biāo)準(zhǔn)輸入重定向到filename文件中
command 0< filename???????????????????????把標(biāo)準(zhǔn)輸入重定向到filename文件中
command > filename?????????????????????????把標(biāo)準(zhǔn)輸出重定向到filename文件中(覆蓋)
command 1> fielname???????????????????????把標(biāo)準(zhǔn)輸出重定向到filename文件中(覆蓋)
command >> filename???????????????????????把標(biāo)準(zhǔn)輸出重定向到filename文件中(追加)
command 1>> filename?????????????????????把標(biāo)準(zhǔn)輸出重定向到filename文件中(追加)
command 2> filename???????????????????????把標(biāo)準(zhǔn)錯(cuò)誤重定向到filename文件中(覆蓋)
command 2>> filename?????????????????????把標(biāo)準(zhǔn)輸出重定向到filename文件中(追加)
command > filename 2>&1???????????????把標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤一起重定向到filename文件中(覆蓋)
command >> filename 2>&1?????????????把標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤一起重定向到filename文件中(追加)
command < filename >filename2????????把標(biāo)準(zhǔn)輸入重定向到filename文件中诽里,把標(biāo)準(zhǔn)輸出重定向
到filename2文件中
command 0< filename 1> filename2???把標(biāo)準(zhǔn)輸入重定向到filename文件中,把標(biāo)準(zhǔn)輸出重定向
到filename2文件中
重定向的使用有如下規(guī)律:
1)標(biāo)準(zhǔn)輸入0飞蛹、輸出1谤狡、錯(cuò)誤2需要分別重定向,一個(gè)重定向只能改變它們中的一個(gè)桩皿。
2)標(biāo)準(zhǔn)輸入0和標(biāo)準(zhǔn)輸出1可以省略豌汇。(當(dāng)其出現(xiàn)重定向符號(hào)左側(cè)時(shí))
3)文件描述符在重定向符號(hào)左側(cè)時(shí)直接寫即可,在右側(cè)時(shí)前面加&泄隔。
4)文件描述符與重定向符號(hào)之間不能有空格拒贱!