新聞中心
如何在Linux中判斷變量或文件是否為空

在Linux系統(tǒng)中,判斷變量或文件是否為空是一項很常見的任務(wù)。無論是在腳本編程中,還是在系統(tǒng)維護或日常操作中,判斷變量或文件是否為空都是必要的。本文將介紹如何在Linux中判斷變量或文件是否為空,并提供實用的代碼示例。
一、判斷變量是否為空
在Linux中,我們可以通過使用“test”命令或“[ ]”來判斷變量是否為空。下面是一些實用的代碼示例:
1.使用“test”命令判斷變量是否為空:
“`
if test -z $var; then
echo “變量為空”
fi
“`
2.使用“[ ]”來判斷變量是否為空:
“`
if [ -z $var ]; then
echo “變量為空”
fi
“`
二、判斷文件是否為空
判斷一個文件是否為空可以使用以下命令:
“`
if [ ! -s $file ];then
echo “$file文件為空”
fi
“`
其中, “-s”選項表示文件存在且大小大于0。
判斷一個文件是否為空還可以使用以下命令:
“`
if [ ! -s $file ]; then
echo “$file文件為空”
fi
“`
其中, “-s”選項表示文件存在且大小大于0。
三、結(jié)語
在Linux中,判斷變量或文件是否為空是一項非?;A(chǔ)的任務(wù),但卻是非常重要的。通過使用本文所提供的例子,可以有效地判斷變量或文件是否為空。此外,在編寫腳本或進行系統(tǒng)管理時,這些技能也是非常必要的。
相關(guān)問題拓展閱讀:
- linux正則,匹配非空字符
- linux awk取值為空
- Linux常用命令詳解 | find
linux正則,匹配非空字符
. 匹蘆森世配單個字符
* 匹配任意長度的字符串陪肢
XXX之間是或關(guān)春旅系
linux awk取值為空
a=`sed -n ‘/^GATEWAY/p’ /etc/sysconfig/network-scripts/ifcfg-eth0 | awk -F ‘=’ ‘{print $2}’`
echo $a
如果這樣還是為空的話,請檢查啟賣你的ifcfg-eth0文件里搏宴面是不是有基旁銀以 GATEWAY開頭的行
如果ifcfg-eth0文件中沒有GATEWAY這一項鋒凱,echo $a 顯示為空。
不滿足 /^GATEWAY/ 條件就不會打印任何東西。
加個判斷即可。
a=”`awk -F= ‘/^GATEWAY/{print $2}’ /etc/sysconfig/network-scripts/ifcfg-eth0`”
if ; then #變量a不為空(文件中存在GATEWAY這項)
# Do sth.
else 旅辯#變量a為空(文件中不存在GATEWAY這項)
# Do sth. else
fi
一般來說會返回空值的
而且你上面這語句不太對
Linux常用命令詳解 | find
find 命令的基本結(jié)構(gòu)如下:
find 命令手冊
: man find
find 命令中的 -name 選項可以根據(jù)文件名稱進行檢索(
區(qū)分大小寫
)。如需要忽略文件名中的大小寫,可以使用 -iname 選項。
-name 和 -iname 兩個選項都支持
wildcards
。如:
例1:查找 /usr 目錄下所有文件名以 .txt 結(jié)尾的文件
例2:查找 /usr 目錄下所有文件名剛好為 4 個字符的文件
例3:查以大寫字母開頭的文件
例4:查以兩個小寫字母和兩個數(shù)字開頭的txt文件
類似的還有:
-lname -ilname
-path -ipath
-regx -iregx
有些時候,你需要在搜索時匹配某個文件或目錄的
完整路徑
,而不僅僅是匹配文件名??梢允褂?-path 或 -ipath 選項。
例1:如查找 /usr 下所有文件名以 .txt 結(jié)尾的文件或目錄,且該文件的父目錄必須是 src 。可以使用以下命令:
例2:在當前目錄除aa之外的子目錄內(nèi)搜索 txt文件
例3:在當前目錄,不再子目錄中,查找txt文件
如果只想搜索得到文件
或
目錄,即不想它們同時出現(xiàn)在結(jié)果中??梢允褂?-type 選項指定文件類型。
-type 選項最常用的參數(shù)如下:
例:檢索 /usr 下所有文件名以 python 開頭的目錄
find 命令支持 -empty 選項用來檢索
為空
的文件或目錄??瘴募次募餂]有任何內(nèi)容,空目錄即目錄中沒有任何文件或子目錄。
例:檢索用戶主目錄下所有的空目錄
find 命令也允許用戶對當前的匹配條件進行
“反義”
(類似于
邏輯非
操作)。
如需要檢索 /usr 下所有文件名
不
以 .txt 為后綴的文件??梢允褂靡韵旅睿?/p>
也可以“翻轉(zhuǎn)”任何其他的篩選條件,如:檢索 /usr 下所有內(nèi)容不為空的文件
為了檢索歸屬于特定用戶的文件或目錄,可以使用 -user 選項。
例:檢索根目錄下所有屬主為 starky 的文件
類似于 -user 選項, -group 選項則可以根據(jù)文件或目錄的
屬組
進行檢索。
有些時候,需要根據(jù)文件創(chuàng)建或修改的時間進行檢索。
Linux 系統(tǒng)中,與文件相關(guān)聯(lián)的時間參數(shù)有以下三種:
與此對應(yīng)的是 find 命令中的 -mtime , -atime 和 -ctime 三個選項。
這三個選項的使用遵循以下示例中的規(guī)則:
檢索 /usr 下兩天前被修改過的文件
如果覺得 -mtime 等選項以
天
為單位時間有點長,還可以使用 -mmin , -amin , -cmin 三個選項。
查找比 aa.txt
新
的文件
查找比 aa.txt
舊
的文件
查找比aa.txt新,比bb.txt舊的文件
-size 選項允許用戶通過文件大小進行搜索(只適用于文件,目錄沒有大小……)。
表示文件大小的單位由以下字符組成:
另外,還可以使用 + 或 – 符號表示
大于
或
小于
當前條件。
檢索文件大小高于 1 GB 的文件
find 命令可以使用 -perm 選項以文件權(quán)限為依據(jù)進行搜索。
9.1使用符號形式
例1:如需要檢索 /usr 目錄下權(quán)限為 rwxr-xr-x 的文件,可以使用以下命令:
例2:搜索 /usr 目錄下所有權(quán)限為 r-xr-xr-x (即系統(tǒng)中的所有用戶都只有讀寫權(quán)限)的文件和目錄,可以使用以下命令:
很多時候,我們只想匹配文件權(quán)限的一個睜櫻
子集
。比如,檢索可以直接被任何友慎用戶執(zhí)行的文件,即只關(guān)心文悉告叢件的執(zhí)行權(quán)限,而不用管其讀寫權(quán)限是什么。
上述的需求可以通過以下命令實現(xiàn):
其中 a=x 前面的 / 符號即用來表示只匹配權(quán)限的某個子集(執(zhí)行權(quán)限),而不用關(guān)心其他權(quán)限的具體設(shè)置。
9.2使用數(shù)字形式
例如:搜索 /usr 目錄下權(quán)限為
644
(即 rwxr-xr-x )的文件
find 命令默認是以
遞歸
的方式檢索項目的,這有時候會導(dǎo)致得到的結(jié)果數(shù)量非常巨大??梢允褂?-maxdepth 限制 find 命令遞歸的層數(shù)。
例如:搜索時向下遞歸的層數(shù)更大為 3
在之前的例子中有出現(xiàn)多個搜索條件的
組合
以及對某個搜索條件的
反轉(zhuǎn)
。
實際上 find 命令支持
“and”
和
“or”
兩種邏輯運算,對應(yīng)的命令選項分別是 -a 和 -o 。通過這兩個選項可以對搜索條件進行更復(fù)雜的組合。
此外還可以使用
小括號
對搜索條件進行
分組
。注意 find 命令中的小括號常需要用
單引號
包裹起來。因小括號在 Shell 中有特殊的含義。
如檢索 /usr 下文件名以 python 開頭且類型為目錄的文件
該命令等同于:
更復(fù)雜的組合形式如:
例4:在除dir0及子目錄以外的目錄下查找txt后綴文件
說明:-a 應(yīng)該是and的縮寫,意思是邏輯運算符‘與’(&&); -o應(yīng)該是or的縮寫,意思是邏輯運算符‘或’(||), -not 表示非.
命令行的意思是:如果目錄dir0存在(即-a左邊為真),則求-prune的值,-prune 返回真,‘與’邏輯表達式為真(即-path ‘./dir0*’ -a -prune 為真),find命令將在除這個目錄以外的目錄下查找txt后綴文件并打印出來;如果目錄dir0不存在(即-a左邊為假),則不求值-prune ,‘與’邏輯表達式為假,則在當前目錄下查找所有txt后綴文件。
-delete 選項可以用來刪除搜索到的文件和目錄。
例如:刪除 home 目錄下所有的空目錄:
-exec 選項可以對搜索到的結(jié)果執(zhí)行執(zhí)行該參數(shù)所給出的shell命令。形式為 command {} \; ,注意{}與\;之間有空格 。每當 find 命令檢索到一個符合條件的文件,會使用其完整路徑取代命令中的 {} ,然后執(zhí)行 -exec 后面的命令一次。
例1:如需要將 home 目錄下所有的 MP3 音頻文件復(fù)制到移動存儲設(shè)備(假設(shè)路徑是 /media/MyDrive ),可使用下面的命令:
其中的
大括號
( {} )作為檢索到的文件的
占位符
,而分號( ; )作為命令結(jié)束的標志。因為分號是 Shell 中有特殊含義的符號,所以需要使用單引號括起來或前面加上轉(zhuǎn)義符 \ 。
例2:查看當前目錄下的所有普通文件,并在 – exec 選項中使用 ls -l 命令將它們列出
例3:在多個文件中檢索某個指定的字符串。如在用戶主目錄下的所有文件中檢索字符串 hello ,可以使用如下命令:
創(chuàng)建 Gzip 格式的壓縮文件的命令為:
現(xiàn)在假設(shè)需要將用戶主目錄下所有的 MP3 文件添加到壓縮包 music.tar.gz 中,直觀的感覺是,其命令應(yīng)為如下形式:
實際情況是,這樣得到的 music.tar.gz 其實只包含一個 MP3 文件。原因是 find 命令
每次
發(fā)現(xiàn)一個音頻文件,都會再執(zhí)行一次 -exec 選項后面的壓縮命令。導(dǎo)致先前生成的壓縮包被覆蓋。
可以先讓 find 命令檢索出所有符合條件的音頻文件,再將得到的
文件列表
傳遞給后面的壓縮命令。完整的命令如下:
如果想瀏覽搜索到的文件(目錄)的詳細信息(如權(quán)限和大小等),可以直接使用 -ls 選項。
例如:瀏覽所有 1G 以上大小的文件的詳細信息
與exec作用相同,區(qū)別在于,在執(zhí)行命令之前,都會給出提示,讓用戶確認是否執(zhí)行
與 exec 作用相同 ,起承接作用。區(qū)別在于 |xargs 主要用于承接刪除操作 ,而 -exec 都可用 如復(fù)制、移動、重命名等
例1:查找以ap或may開頭的文件
例2:查硬連接數(shù)大于2的文件或目錄
例3:查找含特定字符串的文件。查找當前目錄下含有”the string you want find…”字符串的文件:
例4:從根目錄開始查tmpfile,一旦查到馬上刪除
例5:如何用find查找某一天更改的文件?可以使用這一行命令來實現(xiàn):
A Guide to the Linux “Find” Command
關(guān)于linux 判斷不為空的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都創(chuàng)新互聯(lián)建站主營:成都網(wǎng)站建設(shè)、網(wǎng)站維護、網(wǎng)站改版的網(wǎng)站建設(shè)公司,提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、成都網(wǎng)站推廣、成都網(wǎng)站優(yōu)化seo、響應(yīng)式移動網(wǎng)站開發(fā)制作等網(wǎng)站服務(wù)。
文章標題:如何在linux中判斷變量或文件是否為空(linux判斷不為空)
網(wǎng)站網(wǎng)址:http://www.dlmjj.cn/article/cdjgjep.html


咨詢
建站咨詢
