您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關Linux下" >/dev/null 2>&1 "相關知識有哪些,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
一些終端命令或者程序中有">/dev/null 2>&1 "出現
0:表示鍵盤輸入(stdin)
1:表示標準輸出(stdout),系統默認是1
2:表示錯誤輸出(stderr)
command >/dev/null 2>&1 & == command 1>/dev/null 2>&1 &
1)command:表示shell命令或者為一個可執行程序
2)>:表示重定向到哪里
3)/dev/null:表示Linux的空設備文件
4)2:表示標準錯誤輸出
5)&1:&表示等同于的意思,2>&1,表示2的輸出重定向等于于1
6)&:表示后臺執行,即這條指令執行在后臺運行
1>/dev/null:表示標準輸出重定向到空設備文件,也就是不輸出任何信息到終端,不顯示任何信息。
2>&1:表示標準錯誤輸出重定向等同于標準輸出,因為之前標準輸出已經重定向到了空設備文件,所以標準錯誤輸出也重定向到空設備文件。
這條命令的意思就是在后臺執行這個程序,并將錯誤輸出2重定向到標準輸出1,然后將標準輸出1全部放到/dev/null文件,也就是清空.
所以可以看出" >/dev/null 2>&1 "常用來避免shell命令或者程序等運行中有內容輸出。
重定向 的作用是把一個命令的輸出結果發送到另一個地方。
例如,使用 cat
命令查看一個文件,文件內容會被打印到屏幕 :
$ cat foo.txtfoo bar baz
此時,屏幕就是命令的標準輸出( standard output 【stdout】)位置。
我們可以把文件內容發送到別的地方,例如,重定向到 output.txt
文件中 :
$ cat foo.txt > output.txt$ cat output.txtfoo bar baz
其中第一個 cat
使用 >
把 stdout
的位置改為了另一個文件。
再看一個例子,查看一個不存在的文件:
$ cat nop.txt > output.txtcat: nop.txt: No such file or directory
這里的錯誤提示信息為什么顯示到了屏幕,而不是發送到 output.txt
呢?
這就涉及到了另一個位置:標準錯誤輸出standard error 【stderr】
。
$ cat nop.txt > output.txt
這個命令是把 stdout
定位到了文件,而沒有定義 stderr
的位置,所以錯誤信息顯示到了默認的位置:屏幕。
Linux 中一切皆文件,每個文件都有一個文件描述符,值是個正整數。
所以,標準輸出stdout
與 標準錯誤輸出stderr
也有自己的文件描述符:
stdout 為 1
stderr 為 2
$ cat foo.txt > output.txt
實際上就是這樣的:
$ cat foo.txt 1> output.txt
就是把 stdout
指向了 output.txt
,>
是 1>
的簡寫。
所以重定向錯誤信息的輸出就應該是這樣的:
$ cat nop.txt 2> error.txt$ cat error.txtcat: nop.txt: No such file or directory
連個命令連起來就是:
$ cat foo.txt > output.txt 2> error.txt
同時重定向了標準輸出stdout
與標準錯誤輸出stderr
。
回顧開頭的那個命令:
ls foo > /dev/null 2>&1
現在基本上已經可以理解了:
stdout 重定向到 /dev/null
stderr 重定向到 &1
/dev/null
是空設備的意思,重定向到空設備,也就是輸出信息不要了。
&1
表示:文件描述符1 的值,也就是標準輸出的值,那么 2>&1
就是 標準錯誤輸出 與 標準輸出 一樣,也是重定向到空設備。
所以這個命令的意思是:正確信息和錯誤信息都不顯示了。
上述就是小編為大家分享的Linux下" >/dev/null 2>&1 "相關知識有哪些了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。