這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)Linux下" >/dev/null 2>&1 "相關(guān)知識(shí)有哪些,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
成都創(chuàng)新互聯(lián)是一家專業(yè)提供寶山企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、H5建站、小程序制作等業(yè)務(wù)。10年已為寶山眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。
一些終端命令或者程序中有">/dev/null 2>&1 "出現(xiàn)
0:表示鍵盤輸入(stdin)
1:表示標(biāo)準(zhǔn)輸出(stdout),系統(tǒng)默認(rèn)是1
2:表示錯(cuò)誤輸出(stderr)
command >/dev/null 2>&1 & == command 1>/dev/null 2>&1 &
1)command:表示shell命令或者為一個(gè)可執(zhí)行程序
2)>:表示重定向到哪里
3)/dev/null:表示Linux的空設(shè)備文件
4)2:表示標(biāo)準(zhǔn)錯(cuò)誤輸出
5)&1:&表示等同于的意思,2>&1,表示2的輸出重定向等于于1
6)&:表示后臺(tái)執(zhí)行,即這條指令執(zhí)行在后臺(tái)運(yùn)行
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è)備文件。
這條命令的意思就是在后臺(tái)執(zhí)行這個(gè)程序,并將錯(cuò)誤輸出2重定向到標(biāo)準(zhǔn)輸出1,然后將標(biāo)準(zhǔn)輸出1全部放到/dev/null文件,也就是清空.
所以可以看出" >/dev/null 2>&1 "常用來避免shell命令或者程序等運(yùn)行中有內(nèi)容輸出。
重定向 的作用是把一個(gè)命令的輸出結(jié)果發(fā)送到另一個(gè)地方。
例如,使用 cat
命令查看一個(gè)文件,文件內(nèi)容會(huì)被打印到屏幕 :
$ cat foo.txtfoo bar baz
此時(shí),屏幕就是命令的標(biāo)準(zhǔn)輸出( standard output 【stdout】)位置。
我們可以把文件內(nèi)容發(fā)送到別的地方,例如,重定向到 output.txt
文件中 :
$ cat foo.txt > output.txt$ cat output.txtfoo bar baz
其中第一個(gè) cat
使用 >
把 stdout
的位置改為了另一個(gè)文件。
再看一個(gè)例子,查看一個(gè)不存在的文件:
$ cat nop.txt > output.txtcat: nop.txt: No such file or directory
這里的錯(cuò)誤提示信息為什么顯示到了屏幕,而不是發(fā)送到 output.txt
呢?
這就涉及到了另一個(gè)位置:標(biāo)準(zhǔn)錯(cuò)誤輸出standard error 【stderr】
。
$ cat nop.txt > output.txt
這個(gè)命令是把 stdout
定位到了文件,而沒有定義 stderr
的位置,所以錯(cuò)誤信息顯示到了默認(rèn)的位置:屏幕。
Linux 中一切皆文件,每個(gè)文件都有一個(gè)文件描述符,值是個(gè)正整數(shù)。
所以,標(biāo)準(zhǔn)輸出stdout
與 標(biāo)準(zhǔn)錯(cuò)誤輸出stderr
也有自己的文件描述符:
stdout 為 1
stderr 為 2
$ cat foo.txt > output.txt
實(shí)際上就是這樣的:
$ cat foo.txt 1> output.txt
就是把 stdout
指向了 output.txt
,>
是 1>
的簡寫。
所以重定向錯(cuò)誤信息的輸出就應(yīng)該是這樣的:
$ cat nop.txt 2> error.txt$ cat error.txtcat: nop.txt: No such file or directory
連個(gè)命令連起來就是:
$ cat foo.txt > output.txt 2> error.txt
同時(shí)重定向了標(biāo)準(zhǔn)輸出stdout
與標(biāo)準(zhǔn)錯(cuò)誤輸出stderr
。
回顧開頭的那個(gè)命令:
ls foo > /dev/null 2>&1
現(xiàn)在基本上已經(jīng)可以理解了:
stdout 重定向到 /dev/null
stderr 重定向到 &1
/dev/null
是空設(shè)備的意思,重定向到空設(shè)備,也就是輸出信息不要了。
&1
表示:文件描述符1 的值,也就是標(biāo)準(zhǔn)輸出的值,那么 2>&1
就是 標(biāo)準(zhǔn)錯(cuò)誤輸出 與 標(biāo)準(zhǔn)輸出 一樣,也是重定向到空設(shè)備。
所以這個(gè)命令的意思是:正確信息和錯(cuò)誤信息都不顯示了。
上述就是小編為大家分享的Linux下" >/dev/null 2>&1 "相關(guān)知識(shí)有哪些了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。