Linux的 test 命令使用

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-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 判断 file2 与 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 ?若 string 为空字符串,则为 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

test命令用法。功能:检查文件和比较值

1)判断表达式
if test  (表达式为真)
if test !表达式为假
test 表达式1 –a 表达式2                  两个表达式都为真
test 表达式1 –o 表达式2                 两个表达式有一个为真

2)判断字符串
test –n 字符串                                   字符串的长度非零
test –z 字符串                                    字符串的长度为零
test 字符串1=字符串2                    字符串相等
test 字符串1!=字符串2               字符串不等

3)判断整数
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

4)判断文件
test  File1 –ef  File2                            两个文件具有同样的设备号和i结点号
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位
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                                           文件存在并且可执行

标签: 无
返回文章列表 文章二维码
本页链接的二维码
打赏二维码