
/dev/null是一個特殊的裝置檔案,它丢棄了寫入它的所有内容,将其視為黑洞,它相當于隻是寫入檔案,寫入它的所有内容都消失了,嘗試從中讀取或輸出而沒有任何結果,同樣,/dev/null在指令行和腳本中非常有用
< >使用h1類""pgc-h-right-arrow"data-track""2"</h1>
/dev/null 通常用于删除不需要的輸出流,或作為輸入流的空檔案,這些輸入流通常被重定向,可以寫入要删除的任何資料
<标準輸出被丢棄< h1 類"pgc-h-arrow-right"data-track-></h1>
在編寫shell腳本時,你隻想從指令的結果中執行以下邏輯,而不是說在指令執行過程中有一堆中間結果輸出,當你可以将指令執行中的所有輸入寫入/dev/null時
現有 a.sh 腳本,其特征在于确定是否存在傳入的系統指令的功能,如下所示
執行 ./a.sh top 指令,輸出如下
說明:指令 -v 指令名稱是用于确定是否指定了指令名稱的路徑,如果指定了指令名稱,則輸出指定指令名稱,否則,不執行任何輸出
$?表示上一個指令的執行結果,0 表示成功,另一個表示失敗
該腳本使用 top 指令的路徑執行,後跟 top 指令存在的日志
将指令 -v$1 的結果重定向到 /dev/null 會阻止頂部指令路徑的輸出,調整後 a.sh 如下所示
再次執行 ./a.sh 頂部,結果如下
從執行結果中可以看出,将指令 -v$1 的中間結果重定向到 /dev/null 後,top 指令的路徑将不再輸出
此外,修改後的腳本執行時,就好像它是相同的結果一樣
< >丢棄标準誤差輸出< h1 類""pgc-h-right-arrow" 資料跟蹤".19"</h1>
在shell腳本中,删除檔案時,需要先确定檔案是否存在,然後才能執行删除,否則删除會輸出錯誤,一般删除檔案腳本内容如下:
通過将 delete 指令的輸出重定向到 /dev/null,可以避免輸出錯誤消息,而不必判斷檔案是否存在。
指令 ./d.sh t1.txt,./d.sh t2 .txt按如下方式執行:
t1.txt檔案位于目前目錄中,t2.txt不存在,從執行結果來看,删除現有檔案還是不存在的檔案都不會有錯誤輸出資訊
<檔案的内容>"pgc-h-right-arrow"資料軌道""27"</h1>
有許多方法可以清空檔案内容,下面是一種使用 /dev/null 清空檔案内容的方法,如下所示:
<處理 h1 類"pgc-h-right-arrow"data-track"的>日志。30 英寸</h1>
在腳本中,為了調試友善,經常添加一些日志列印邏輯,有時這類調試日志比較多,腳本測試,這些調試日志可能會被删除或注釋掉
這裡有一個既不删除也不注釋掉日志的技巧,并且在執行腳本時不會輸出它們
例如,目前目錄具有.txt日志,并且腳本的調試日志作為回顯"這是調試日志"寫入檔案>>日志.txt
現在腳本功能測試已認證,調試日志不需要寫入日志.txt
您可以執行此操作:原始腳本保持不變,日志.txt在本地删除,然後執行 ln-s/dev/null ./log .txt 指令,該指令建立日志.txt /dev/nulll 軟連接配接,然後寫入日志.txt的所有内容實際上寫入 //null,寫入 /dev/null 的所有内容都将被丢棄
如果以後需要再次調試腳本,請删除連結