shell中的2>/dev/null


1、文件描述符
Linux系統預留可三個文件描述符:0、1和2,他們的意義如下所示:
0——標准輸入(stdin)
1——標准輸出(stdout)
2——標准錯誤(stderr)

標准輸出——stdout
假設:在當前目錄下,有且只有一個文件名稱為123.txt的文件,這時我們運行這個命令【ls 123.txt】,就會獲得一個標准輸出stdout的輸出結果:123.txt
錯誤輸出——stderr
按照上面的假設,我們運行另一條命令【ls abc.txt】,這樣我們就會獲得一個標准錯誤stderr的輸出結果“ls:無法訪問abc.txt:沒有那個文件或目錄”。

2、重定向
重定向的符號有兩個:>或>>,兩者的區別是:前者會先清空文件,然后再寫入內容,后者會將重定向的內容追加到現有文件的尾部。舉個例子:
(a)重定向標准輸出stdout

對比沒有添加重定向的操作,這條命令在使用之后並沒有將123.txt打印到屏幕。在緊接的cat操作后,可以發現本來應該被輸出的內容被記錄到stdout.txt中。
(b)重定向標准錯誤stderr

對比沒有添加重定向的操作,這條命令在使用之后並沒有將123.txt打印到屏幕。在緊接的cat操作后,可以發現本來應該被輸出的內容被記錄到stderr.txt中。

以上執行結果如下:

[root@node1 xiaoa]# ll
total 0
-rw-r--r--. 1 root root 0 Jun  5 14:21 123.txt
[root@node1 xiaoa]# ls 123.txt
123.txt
[root@node1 xiaoa]# ls abd.txt
ls: cannot access abd.txt: No such file or directory
[root@node1 xiaoa]# ls 123.txt 1> stdout.txt
[root@node1 xiaoa]# vi stdout.txt
[root@node1 xiaoa]# ls abc.txt 2> stderr.txt
[root@node1 xiaoa]# vi stderr.txt
[root@node1 xiaoa]# ll
total 8
-rw-r--r--. 1 root root  0 Jun  5 14:21 123.txt
-rw-r--r--. 1 root root 53 Jun  5 14:40 stderr.txt
-rw-r--r--. 1 root root  8 Jun  5 14:39 stdout.txt

(c)也可以將stderr和stdout重定向到同一個文件

#ls 123.txt &> output.txt

3、Linux特殊文件
/dev/null是一個特殊的設備文件,這個文件接收到任何數據都會被丟棄。因此,null這個設備通常也被稱為位桶(bit bucket)或黑洞。
所以,2>/dev/null的意思就是將標准錯誤stderr刪掉。

#ls abc.txt 2> /dev/null

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM