1、文件的“类型”检测, 如 test -e filename
-e 该“文件”是否存在(常用)(exist)
-f 该“文件”是否为文件(file) (常用)
-d 该“文件”是否为目录(directory)
-b 该“文件”是否为一个快设备(block)
-c 该“文件”是否为一个字符设备(char)
-S 该“文件”是否为一个套接字文件(socket)
-P 该“文件”是否为一个FIFO(管道)文件(pipe)
-L 该“文件”是否为一个连接文件。(link)
2、文件的“权限”检测,如 test -r filename
-r 检测该文件是否具有“可读”属性
-w 检测该文件是否具有“可写”属性
-x 检测该文件是否具有“可执行”属性
-u 检测该文件是否具有“SUID”属性
-g 检测该文件是否具有“SGID”属性
-k 检测该文件是否具有“Sticky bit”属性
-s 检测该文件是否为“非空白文件”
3、比较两个文件,如: test file1 -nt file2
-nt 判断file1是否比file2新(newer than)
-ot 判断file1是否比file2旧(older than)
-ef 判断file1与file2是否为同一个文件,可用于判断硬链接。主要判断两个文件是否均指向通过一个inode。(equal file)
4、判断字符串数据
test -z string 判断字符串是否为0,若string为空字符串,则为true
test -n string 判断字符串是否非为0,若string为空字符串,则为false
test str1 = str2 判断str1是否等于test2,若相等,则回传true(注意等号两边必须加空格)
test str != str2 判断str1是否等于str2,若相等,则回传false(注意不等号两边必须夹空格)
5、两个整数之间的判断,例如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)
6、多重条件判断
-a (and)两个条件同时成立。例如: test -r file -a -x file 若文件file具有可读和可执行权限,则为真。
-o (or)两个条件任何一个成立。例如: test -r file -o -x file 则file具有r或x权限时,就可以回传true
! 条件求反,如test ! -x file,当file 不具有x时,回传true