工做中遇到test的命令 總結一下。(很經常使用)平時工做太忙 寫的文檔太潦草請原諒。但願對你有所幫助。
node
此文只是總結常見的工做中用的比較多。(至少我是用過了)linux
言歸正傳 。shell
最好的辦法就是本身去 man test 領悟下。[其中標記***重點 最下方有例子能夠說明]ide
NAME測試
test - check file types and compare valuesspa
選項文檔
-b<文件>:若是文件爲一個塊特殊文件,則爲真;it
-c<文件>:若是文件爲一個字符特殊文件,則爲真;class
-d<文件>:若是文件爲一個目錄,則爲真;test
-e<文件>:若是文件存在,則爲真;
-f<文件>:若是文件爲一個普通文件,則爲真;
-g<文件>:若是設置了文件的SGID位,則爲真;
-G<文件>:若是文件存在且歸該組全部,則爲真;
-k<文件>:若是設置了文件的粘着位,則爲真;
-O<文件>:若是文件存在而且歸該用戶全部,則爲真;
-p<文件>:若是文件爲一個命名管道,則爲真;
-r<文件>:若是文件可讀,則爲真;
-s<文件>:若是文件的長度不爲零,則爲真;
-S<文件>:若是文件爲一個套接字特殊文件,則爲真;
-u<文件>:若是設置了文件的SUID位,則爲真;
-w<文件>:若是文件可寫,則爲真;
-x<文件>:若是文件可執行,則爲真。
判斷表達式
if test #表達式爲真
if test ! #表達式爲假
test 表達式1 –a 表達式2 #兩個表達式都爲真
test 表達式1 –o 表達式2 #兩個表達式有一個爲真
test 表達式1 ! 表達式2 #條件求反
判斷整數
test 整數1 -eq 整數2 #整數相等
test 整數1 -ge 整數2 #整數1大於等於整數2
test 整數1 -gt 整數2 #整數1大於整數2
test 整數1 -le 整數2 #整數1小於等於整數2
test 整數1 -lt 整數2 #整數1小於整數2
test 整數1 -ne 整數2 #整數1不等於整數2
判讀文件
test File1 –ef File2 兩個文件是否爲同一個文件,可用於硬鏈接。主要判斷兩個文件是否指向同一個inode。
test File1 –nt File2 判斷文件1是否比文件2新
test File1 –ot File2 判斷文件1比是否文件2舊
test –b file #文件是否塊設備文件
test –c File #文件而且是字符設備文件
test –d File #文件而且是目錄
test –e File #文件是否存在 (經常使用)
test –f File #文件是否爲正規文件 (經常使用)
test –g File #文件是不是設置了組id
test –G File #文件屬於的有效組ID
test –h File #文件是不是一個符號連接(同-L)
test –k File #文件是否設置了Sticky bit位
test –b File #文件存在而且是塊設備文件
test –L File #文件是不是一個符號連接(同-h)
test –o File #文件的屬於有效用戶ID
test –p File #文件是一個命名管道
test –r File #文件是否可讀
test –s File #文件是不是非空白文件
test –t FD #文件描述符是在一個終端打開的
test –u File #文件存在而且設置了它的set-user-id位
test –w File #文件是否存在並可寫
test –x File #文件屬否存在並可執行
語法
格式1: test <測試表達式>
格式2: [<測試表達式>]
格式3: [[<測試表達式>]]
其中的 :格式1和格式2是等價的。 我的推薦使用格式二、固然您能夠本身選擇。愛好問題。
提示:
在[[]]中能夠使用通配符進行模式匹配。&&、||、>、<等操做符能夠應用於[[]]中,但不能應用於[] 中。
語法例子:
[root@shell ~]# test -f linux-1.ht &&echo 0 || echo 1 1 [root@shell ~]# touch linux-1.ht [root@shell ~]# test -f linux-1.ht &&echo 0 || echo 1 0 test $? -eq 0 && echo 1||echo 0 test ! -f linux ! [root@shell ~]# arg="oldboy" [root@shell ~]# echo $arg oldboy [root@shell ~]# test -z "$arg" &&echo true||echo false false
格式2:[<測試 表達式>]
[root@shell ~]# [ -f linux ] && echo true ||echo false false [root@shell ~]# touch linux [root@shell ~]# [ -f linux ] && echo true ||echo false true [root@shell ~]# [ -f linux ] && echo true true
[root@shell]# [ $a -gt $b ]&& echo 1 ||echo 0 0 [root@shell]# [ $a -lt $b ]&& echo 1 ||echo 0 1 [root@shell]# [[ $a > $b ]]&& echo 1 ||echo 0 0 [root@shell]# [[ $a < $b ]]&& echo 1 ||echo 0 1
經操做>和<在單 [ ]中須要轉義
[root@shell]# [ $a < $b ]&& echo 1 ||echo 0 1 [root@shell]# [ $a > $b ]&& echo 1 ||echo 0 1 [root@shell]# [ $a \> $b ]&& echo 1 ||echo 0 0 [root@shell]# [ $a \< $b ]&& echo 1 ||echo 0 1