-a  -e 文件存在 
存在性类别测试
-b  存在且为块设备文件
例如[-b /etc/grub2.cfg]
-c   .....字符设备
-d      目录文件
-f     普通文件
-p         命名管道文件
-h/-L   符号链接文件
-S    套接字文件

权限测试
-r  -w  -x  文件是否存在并且拥有。。权限
特殊权限
-g   存在且存在sgid权限
-u        suid
-k              sticky
大小测试
-s存在且非空(有大小)

文件是否打开
-t fd  fd表示文件描述符是否已经打开且与某终端相关

-N上次读取后是否被修改过
-O 当前用户是否为文件属主
-G  当前有效用户是否为文件属主

双目测试:

  FILE1 -ef FILE2  表示两个文件是否为指向同一个设备上的相同的inode

  FILE1 -nt FILE2  文件1是否新于2

  FILE1 -ot FILE2   1是否旧于2

组合测试条件
    逻辑运算
    两种方式
第一种
         &&
         ||
        !
        与或非
    例子 [-e file] &&[-r file]   存在且可读  
第二种
    EXP1 -a  EXP2
    EXP1 -o  EXP2
    ! EXP 
    与或非

必须使用测试命令

hotsName=`hostname`
[-z "$hotsName"] || ["$hotsName"=="localhost.localdomain" ]
为空或者等于local..

1 && 2
前面满足 那么就会执行2  与命令可以看成条件命令取使用

[! -r /etc/fstab -a ! -w /etc/fstab]
[! \(-r /etc/fstab -o  -w /etc/fstab\)]
这里的连接需要使用或命令,因为&&连接了两个命令,读取了第一个失败,那么就不会读第二个命令了
既不可读也不可写的测试,要注意不能在root用户下