1、概論 -- 來自維基的解釋 /dev/null : 在類Unix系統中,/dev/null,或稱空設備,是一個特殊的設備檔案,它丟棄一切寫入其中的資料(但報告寫入操作成功),讀取它則會立即得到一個EOF, 在程式員行話,尤其是Unix行話中,/dev/null 被稱為位桶(bit bucket)或者黑洞(black hole),空設備通常被用于丟棄不需要的輸出流,或作為用于輸入流的空檔案,這些操作通常由重定向完成, /dev/zero : 在類UNIX 作業系統中, /dev/zero 是一個特殊的檔案,當你讀它的時候,它會提供無限的空字符(NULL, ASCII NUL, 0x00), 其中的一個典型用法是用它提供的字符流來覆寫資訊,另一個常見用法是產生一個特定大小的空白檔案,BSD就是通過mmap把/dev/zero映射到虛地址空間實作共享記憶體的,可以使用mmap將/dev/zero映射到一個虛擬的記憶體空間,這個操作的效果等同于使用一段匿名的記憶體(沒有和任何檔案相關), 2、 /dev/null 的日常使用 把/dev/null看作"黑洞",它等價于一個只寫檔案,并且所有寫入它的內容都會永遠丟失,而嘗試從它那兒讀取內容則什么也讀不到,然而, /dev/null對命令列和腳本都非常的有用, 我們都知道 cat $filename 會輸出filename對應的檔案內容(輸出到標準輸出) 而使用 cat $filename >/dev/null 則不會得到任何資訊,因為我們將本來該通過標準輸出顯示的檔案資訊重定向到了 /dev/null 中,so what will you get ? 使用 cat $filename 1>/dev/null 也會得到同樣的效果,因為默認重定向的 1 就是標準輸出, 如果你對 shell 腳本或者重定向比較熟悉的話,應該會聯想到 2 ,也即標準錯誤輸出, 我們使用 cat $filename 時如果filename對應的檔案不存在,系統肯定會報錯: “ cat: filename: 沒有那個檔案或目錄 ” , 如果我們不想看到錯誤輸出呢?我們可以禁止標準錯誤: cat $badname 2>/dev/null 我們可以通過下面這個測驗來更加深刻的理解/dev/null :
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/231269.html
標籤:其他
