最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

shell腳本中 /dev/null 的用法小結(jié)

 更新時間:2021年09月24日 15:15:30   作者:Linux開發(fā)那些事兒  
/dev/null 通常被用于丟棄不需要的輸出流,或作為用于輸入流的空文件,這些操作通常由重定向完成,任何你想丟棄的數(shù)據(jù)都可以寫入其中,本文重點給大家介紹shell腳本中 /dev/null 的用法小結(jié),感興趣的朋友一起看看吧

/dev/null 是一個特殊的設(shè)備文件,它丟棄一切寫入其中的數(shù)據(jù) 可以將它 視為一個黑洞, 它等效于只寫文件, 寫入其中的所有內(nèi)容都會消失, 嘗試從中讀取或輸出不會有任何結(jié)果,同樣,/dev/null 在命令行和腳本中都非常有用

用途

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

丟棄標(biāo)準(zhǔn)輸出

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

現(xiàn)有 a.sh 腳本,它的功能是判斷傳入的系統(tǒng)命令是否存在,腳本內(nèi)容如下

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

執(zhí)行 ./a.sh top 命令,輸出如下

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

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

$? 表示前一條命令的執(zhí)行結(jié)果, 0 表示成功,其他表示失敗

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

command -v $1的結(jié)果重定向到 /dev/null 可以屏蔽掉 top命令路徑的輸出,調(diào)整之后的a.sh 內(nèi)容如下

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

再次執(zhí)行 ./a.sh top,結(jié)果如下

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

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

而且,修改之后的腳本執(zhí)行結(jié)果和原來的結(jié)果是一樣的

丟棄標(biāo)準(zhǔn)錯誤輸出

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

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

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

#!/bin/bash
  
   rm $1 >/dev/null 2>$1

分別執(zhí)行命令 ./d.sh t1.txt、./d.sh t2.txt ,結(jié)果如下:

[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: 沒有那個文件或目錄

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

清空文件內(nèi)容

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

[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 

日志的處理

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

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

比如: 當(dāng)前目錄有一個日志文件 log.txt,腳本的調(diào)試日志會以 echo " this is debug log" >> log.txt 的形式寫入這個文件中

現(xiàn)在腳本功能測試通過了,調(diào)試日志不需要寫入log.txt

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

如果后面需要再次調(diào)試腳本,刪除鏈接即可

到此這篇關(guān)于shell腳本中 /dev/null 的用途的文章就介紹到這了,更多相關(guān)shell腳本 /dev/null 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • shell實現(xiàn)Fisher–Yates shuffle洗牌算法介紹

    shell實現(xiàn)Fisher–Yates shuffle洗牌算法介紹

    大家好,本篇文章主要講的是shell實現(xiàn)Fisher–Yates shuffle洗牌算法介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下哦
    2021-11-11
  • telnet 命令使用方法大全

    telnet 命令使用方法大全

    這篇文章主要介紹了telnet 命令使用方法大全,本文給大家介紹的非常想詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • 通過Spring Shell 開發(fā) Java 命令行應(yīng)用

    通過Spring Shell 開發(fā) Java 命令行應(yīng)用

    這篇文章主要介紹了通過Spring Shell 開發(fā) Java 命令行應(yīng)用的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-11-11
  • shell腳本字符串和數(shù)組的使用操作方法

    shell腳本字符串和數(shù)組的使用操作方法

    這篇文章主要介紹了shell腳本字符串和數(shù)組的使用操作方法,在文中給大家提到shell將字符串分隔成數(shù)組的方法,需要的朋友可以參考下
    2019-06-06
  • shell中數(shù)組的定義及操作

    shell中數(shù)組的定義及操作

    本文主要介紹了shell中數(shù)組的定義及操作,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • shell腳本設(shè)置日志格式的方法

    shell腳本設(shè)置日志格式的方法

    本文給大家分享shell腳本設(shè)置日志格式的相關(guān)知識,設(shè)置日志級別并輸出對應(yīng)日志,文中還給大家提到了shell輸出格式化日志信息的腳本,感興趣的朋友跟隨小編一起看看吧
    2022-10-10
  • 判斷輸入的日期是否正確的shell腳本

    判斷輸入的日期是否正確的shell腳本

    這篇文章主要介紹了判斷輸入的日期是否正確的shell腳本,需要的朋友可以參考下
    2016-08-08
  • 在shell腳本中獲取上個月最后一天的日期方法

    在shell腳本中獲取上個月最后一天的日期方法

    今天小編就為大家分享一篇在shell腳本中獲取上個月最后一天的日期方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Linux命令定位與查找之which、whereis和find的用法示例詳解

    Linux命令定位與查找之which、whereis和find的用法示例詳解

    Linux命令的定位與查找是我們?nèi)粘9ぷ髦斜貍涞募寄?掌握which、whereis和find這三個命令,可以幫助我們更加高效地進(jìn)行文件搜索和定位工作,這篇文章主要介紹了Linux命令定位與查找:which、whereis和find的用法詳解,需要的朋友可以參考下
    2023-10-10
  • Shell腳本實現(xiàn)查殺子進(jìn)程、僵尸進(jìn)程

    Shell腳本實現(xiàn)查殺子進(jìn)程、僵尸進(jìn)程

    這篇文章主要介紹了Shell腳本實現(xiàn)查殺子進(jìn)程、僵尸進(jìn)程,本文直接給出實現(xiàn)代碼,實現(xiàn)遞歸找到導(dǎo)致進(jìn)程僵死的最底層子進(jìn)程并殺除,需要的朋友可以參考下
    2015-01-01

最新評論

隆化县| 略阳县| 太原市| 合川市| 绥江县| 石棉县| 江山市| 开远市| 城口县| 房产| 五莲县| 怀柔区| 辰溪县| 长顺县| 阿巴嘎旗| 桦南县| 满洲里市| 远安县| 济阳县| 蒲江县| 洛阳市| 红原县| 桂东县| 湖南省| 天门市| 建宁县| 东阿县| 鄄城县| 积石山| 平邑县| 哈巴河县| 雷波县| 东丰县| 高陵县| 余姚市| 庄浪县| 石嘴山市| 合肥市| 冀州市| 万载县| 平塘县|