日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux gt txt内容为空,2gt;/dev/null和gt;/dev/null 2gt;amp;1和2gt;amp;1gt;/dev/null的区别...

發布時間:2024/10/14 linux 79 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux gt txt内容为空,2gt;/dev/null和gt;/dev/null 2gt;amp;1和2gt;amp;1gt;/dev/null的区别... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、區別:

2>/dev/null

意思就是把錯誤輸出到“黑洞”

>/dev/null 2>&1

默認情況是1,也就是等同于1>/dev/null 2>&1。意思就是把標準輸出重定向到“黑洞”,還把錯誤輸出2重定向到標準輸出1,也就是標準輸出和錯誤輸出都進了“黑洞”

2>&1 >/dev/null

意思就是把錯誤輸出2重定向到標準出書1,也就是屏幕,標準輸出進了“黑洞”,也就是標準輸出進了黑洞,錯誤輸出打印到屏幕

二、解釋:

1、文件描述符

Linux系統預留可三個文件描述符:0、1和2,他們的意義如下所示:

0——標準輸入(stdin)

1——標準輸出(stdout)

2——標準錯誤(stderr)

標準輸出——stdout

假設:在當前目錄下,有且只有一個文件名稱為ljl.txt的文件,這時我們運行這個命令【ls ljl.txt】,就會獲得一個標準輸出stdout的輸出結果:ljl.txt

錯誤輸出——stderr

按照上面的假設,我們運行另一條命令【ls gss.txt】,這樣我們就會獲得一個標準錯誤stderr的輸出結果“ls:無法訪問gss.txt:沒有那個文件或目錄”。

2、重定向

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

(1)、重定向標準輸出stdout

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

(2)、重定向標準錯誤stderr

如上圖所示,文件描述符2,標準錯誤的重定向也是同樣的原理被記錄在了文件stderr.txt這個文件里面了。

(3)、可以將stderr單獨定向到一個文件,stdout重定向到另一個文件

cmd 2> stderr.txt 1>stdout.txt

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

cmd > output.txt 2>&1

或采用下面的方法,可以少寫幾個字,能達到同樣的效果

cmd &> output.txt

cmd >& output.txt #兩個表達式效果一樣的

3、Linux特殊文件

/dev/null是一個特殊的設備文件,這個文件接收到任何數據都會被丟棄。因此,null這個設備通常也被稱為位桶(bit bucket)或黑洞。

所以,2>/dev/null的意思就是將標準錯誤stderr刪掉。

附:linux中單進程的文件數據結構圖

上圖是linux中單進程的文件數據結構圖,最左邊使我們熟悉的fd標志,也就是文件描述符,一個進程內所有的文件描述符按照順序排列構成一張文件描述符表,其中包括fd0,fd1,fd2。(注意:這里并沒有說標準輸入,標準輸出,錯誤輸出,原因后面講)

那么,問題來了,假如我們想fd1寫入數據時,最終數據會到哪兒呢?事實上fd1作為文件描述符,它本身并不是文件的真正的“入口”,文件真正的“入口”在文件描述符表的第二列:記錄了每個文件描述符所對應文件位置的文件指針。換言之,如果我們更換fd1所對應的文件指針,就改變了fd1指向文件的”真正位置”。

fd0,fd1,fd2指向的文件默認情況下分別是/dev/stdin、/dev/stdout和/dev/stderr,這才是真正的標準輸入,標準輸出,錯誤輸出,如果將數據寫入到/dev/stdout中,就會在屏幕上顯示數據,fd0,fd1,fd2只是標志而已,真正起作用的是他們對應的文件指針!

所以重定向命令’>’所做的工作就是就是改變了fd所對應的文件指針!

總結

以上是生活随笔為你收集整理的linux gt txt内容为空,2gt;/dev/null和gt;/dev/null 2gt;amp;1和2gt;amp;1gt;/dev/null的区别...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。