test指令(筆記)

本文內容來自《鳥哥的linux私房菜》

我們可以通過test -e指令查詢對應的檔名是否存在,但要結合&&和||才能出效果。

test -e /tmp && echo "exist" || echo "Not exist"
測試的標誌 代表意義
1.關於某個檔名的【文件類型判斷】,如 test -e filename 表示存在否
 -e

該【檔名是否存在】(常用)

-f

該【檔名】是否存在且爲文件(file)(常用)

-d 該【文件名】是否存在且爲目錄(directory)(常用)
-b

該【檔名】是否存在且爲一個block device裝置

-c 該【檔名】是否存在且爲一個character device裝置
-S 該【檔名】是否存在且爲一個Socket文件
-p 該【檔名】是否存在且爲一個FIFO(pipe)文件
-L 該【檔名】是否存在且爲一個連結檔
2.關於文件的權限偵測,如 test -r filename 表示可讀否(但root權限常有例外)
-r 偵測該檔名是否存在且具有【可讀】的權限
-w 偵測該檔名是否存在且具有【可寫】的權限
-x 偵測該檔名是否存在且具有【可執行】的權限
-u 偵測該文件名是否存在且具有【SUID】的屬性
-g 偵測該文件名是否存在且具有【SGID】的屬性
-k 偵測該文件名是否存在且具有【Sticky bit】的屬性
-s 偵測該檔名是否存在且爲【非空白文件】
3.兩個文件之間的比較,如:test file1 -nt file2
-nt (newer than)判斷file1是否比file2新
-ot

(older than)判斷file1是否比file2舊

-ef

判斷file1與file2是否爲同一個文件,可用在判斷hard link的判定上。主要意義在判定,兩個文件是否均指向同一個inode裏。

4.關於兩個整數之間的判定,例如:test n1 -eq n2

-eq 兩數值相等(equal)
-ne 兩數值不等(not equal)
-gt

n1大於n2(greater than)

-lt n1小於n2(less than)
-ge

n1大於等於n2(greater than or equal)

-le n1小於等於n2(less than or equal)
5.判定字符串的數據
test -z string 判定字符串是否爲0?若stirng爲空字符串,則爲true
test -n string 判定字符串是否非爲0?若string爲空字符串,則爲false。注:-n亦可忽略

test str1

 == str2

判定str1是否等於str2,若相等,則回傳true
test str1 !=str2 判定str1是否不等於str2,若相等,則回傳false
6.多重條件判定,例如:test -r filename -a -x filename
-a

(and)兩狀況同時成立,例如test -r file -a -x file,則file同時具有

r與x權限時,纔回傳true

-o (or)兩狀況任何一個成立,例如test -r file -o -x file,則file具有r或x權限時,就可以回傳true
反相狀態,如test ! -x file,當file不具有x時,回傳true

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章