/dev/null和標準*使用

lethe1203發表於2024-03-29
"/dev/null" 是一個特殊的裝置檔案,它在 Unix 和類 Unix 系統中用於丟棄資料或忽略輸出。當資料被寫入 /dev/null 時,實際上是將資料丟棄,而讀取 /dev/null 則會立即返回檔案結尾(EOF)。
在 Unix/Linux 系統中,一切皆檔案的思想也適用於裝置。/dev/null 是一個特殊的裝置檔案,它不對應任何實際的硬體裝置,而是一個空裝置。當資料被寫入 /dev/null 時,作業系統會立即丟棄這些資料,而讀取 /dev/null 則會立即返回檔案結尾,就好像在一個空檔案中讀取一樣
標準輸入輸出和標準錯誤:
0 —— stdin(標準輸入)
1 —— stdout(標準輸出)
2 —— stderr (標準錯誤)
所以/dev/null和標準*結合使用,可有:
$ cmd 2>/dev/null    // 表示將cmd出來的標準錯誤輸出到/dev/null,只留下標準輸出和標準輸入的資訊列印到終端
$ cmd &>/dev/null    // 將標準輸出和標準錯誤輸出都重定向到 /dev/null,即丟棄所有輸出,不在終端上顯示
$ cmd 2>&1 >/dev/null    // 將標準錯誤重定向到標準標準輸出,和上面的指令一個意思,都是丟棄所有輸出,不在終端上顯示
$ cmd 2> error.log    // 將命令的錯誤輸出重定向到檔案
$ cat file.txt | grep "pattern"    // 透過管道將一個命令的輸出作為另一個命令的輸入
$ make |grep "test" 2> test.log    // grep命令的標準錯誤資訊記錄到"test.log"檔案中,而標準輸出則會顯示在螢幕上

相關文章