91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

shell中的/dev/null有什么用

發布時間:2022-02-17 15:27:54 來源:億速云 閱讀:149 作者:iii 欄目:開發技術

這篇文章主要講解了“shell中的/dev/null有什么用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“shell中的/dev/null有什么用”吧!

/dev/null看作”黑洞”. 它非常等價于一個只寫文件. 所有寫入它的內容都會永遠丟失. 而嘗試從它那兒讀取內容則什么也讀不到. 然而, /dev/null對命令行和腳本都非常的有用。

shell中的/dev/null有什么用

用途

/dev/null 通常被用于丟棄不需要的輸出流,或作為用于輸入流的空文件,這些操作通常由重定向完成,任何你想丟棄的數據都可以寫入其中

丟棄標準輸出

在寫shell腳本的時候,只想通過命令的結果執行后面的邏輯,而不想命令執行過程中有一大堆中間結果輸出,這時候可以把命令執行過程中的輸入全部寫入 /dev/null

現有 a.sh 腳本,它的功能是判斷傳入的系統命令是否存在,腳本內容如下

#!/bin/bash
     command -v $1   
  if [[ $? -eq 0 ]]; then     echo "command $1 exist..."  else     echo "command $1 not exist..."  fi

執行 ./a.sh top 命令,輸出如下

[tt@ecs-centos-7 dev_test]$ ./a.sh top
/bin/topcommand top exist...

說明: command -v 命令名 是查找指定命令名的命令是否存在,如果存在,輸出指定命令名的路徑,否則,不做任何輸出

$? 表示前一條命令的執行結果, 0 表示成功,其他表示失敗

腳本的執行結果中先輸出了 top 命令的路徑,緊接著輸出了top命令存在的日志

把 command -v $1的結果重定向到 /dev/null 可以屏蔽掉 top命令路徑的輸出,調整之后的a.sh 內容如下

#!/bin/bash
 command -v $1 >/dev/null
 if [[ $? -eq 0 ]]; then   echo "command $1 exist..."else   echo "command $1 not exist..."fi

再次執行 ./a.sh top,結果如下

[tt@ecs-centos-7 dev_test]$ ./a.sh topcommand top exist...
[tt@ecs-centos-7 dev_test]$

從執行結果可以看出,把 command -v $1 的中間結果重定向到 /dev/null 之后,就不會再輸出top命令的路徑了

而且,修改之后的腳本執行結果和原來的結果是一樣的

丟棄標準錯誤輸出

在shell腳本中,刪除一個文件的時候,需要先判斷文件是否存在,然后才能執行刪除操作,否則刪除的時候會輸出錯誤, 一般的刪除文件腳本內容如下:

#!/bin/bash
     if [ -f $1 ]; then     rm $1  fi

可以通過把刪除命令的輸出重定向到 /dev/null 來避免輸出錯誤信息, 同時也不用判斷文件是否存在了, 調整之后的刪除腳本內容如下:

#!/bin/bashrm $1 >/dev/null 2>$1

分別執行命令 ./d.sh t1.txt、./d.sh t2.txt ,結果如下:

[tt@ecs-centos-7 dev_test]$ ls t*.txt
t1.txt
[tt@ecs-centos-7 dev_test]$ ./d.sh t1.txt
[tt@ecs-centos-7 dev_test]$ ./d.sh t2.txt
[tt@ecs-centos-7 dev_test]$ ls t*.txt
ls: 無法訪問t*.txt: 沒有那個文件或目錄

ls: 無法訪問t*.txt: 沒有那個文件或目錄

t1.txt 文件位于當前目錄下,t2.txt 不存在,從執行結果可以看出,不管是刪除存在的文件還是不存在的文件都不會有錯誤輸出信息了

清空文件內容

清空文件內容有很多種方法,這里介紹一種利用 /dev/null 清空文件內容的方法,具體的示例如下:

[tt@ecs-centos-7 dev_test]$ cat t.txt  
123456
[tt@ecs-centos-7 dev_test]$ cat /dev/null > t.txt  
[tt@ecs-centos-7 dev_test]$ cat t.txt

日志的處理

在腳本中,為了方便調試,經常會加一些日志打印的邏輯,有時這種調試日志還比較多,腳本測試通過之后,這些調試日志可能就刪除或者注釋掉了

這里提供一個小技巧,既不用刪除也不用注釋掉日志,同時執行腳本的時候還不會輸出這些調試日志

比如: 當前目錄有一個日志文件 log.txt,腳本的調試日志會以 echo ” this is debug log” >> log.txt 的形式寫入這個文件中

現在腳本功能測試通過了,調試日志不需要寫入log.txt了

可以這么做:原來的腳本原樣不動,本地先刪除 log.txt,然后執行 ln -s /dev/null ./log.txt 命令,該命令建立了一個 log.txt 到 /dev/nulll的軟連接,以后都有寫入 log.txt 的內容實際都會寫入 /dev/null ,而寫入 /dev/null 的所有內容都會被丟棄掉

感謝各位的閱讀,以上就是“shell中的/dev/null有什么用”的內容了,經過本文的學習后,相信大家對shell中的/dev/null有什么用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

合江县| 双流县| 招远市| 徐州市| 长沙市| 普宁市| 泰宁县| 林芝县| 连州市| 仙桃市| 无锡市| 津南区| 柯坪县| 汕尾市| 乾安县| 郁南县| 洪洞县| 公安县| 桃园市| 青浦区| 綦江县| 澜沧| 新巴尔虎右旗| 新田县| 聂拉木县| 大丰市| 宜城市| 安宁市| 北川| 新晃| 青铜峡市| 翼城县| 康保县| 顺平县| 科技| 丹阳市| 延庆县| 武清区| 孟连| 保康县| 卓资县|