zoukankan      html  css  js  c++  java
  • shell 文件条件判断

    按照文件类型进行判断

    '-b 文件'
    判断该文件是否存在,并且是否为块设备文件(是块设备文件为真)
    '-c 文件'
    判断该文件是否存在,并且是否为字符设备文件(是字符设备文件为真)
    '-d 文件'
    判断该文件是否存在,并且是否为目录文件(是目录文件为真)
    '-e 文件'
    判断该文件是否存在(存在为真)
    '-f 文件'
    判断该文件是否存在,并且是否为普通文件(是普通文件为真)
    '-L 文件'
    判断该文件是否存在,并且是否为符号链接文件(是符号链接文件为真)
    '-p 文件'
    判断该文件是否存在,并且是否为管道文件(是管道文件为真)
    '-s 文件'
    判断该文件是否存在,并且是否为非空(非空为真)
    '-S 文件'
    判断该文件是否存在,并且是否为套接字文件(是套接字文件为真)
    

    判断格式

    *)test -e /root/install.log
    *) [ -e /root/install.log ]
    ​
    实例:
    [ -d /root ] && echo "yes" || echo "no"
    第一个判断命令如果正确执行,则打印yes,否则打印no
    

    按照文件权限进行判断

    '-r 文件'
    判断该文件是否存在,并且是否该文件拥有读权限(有读权限为真)
    '-w文件'
    判断该文件是否存在,并且是否该文件拥有写权限(有写权限为真)
    '-x 文件'
    判断该文件是否存在,并且是否该文件拥有执行权限(有执行权限为真)
    ​
    '-u 文件'
    判断该文件是否存在,并且该文件拥有SUID权限(有SUID权限为真)
    '-g文件'
    判断该文件是否存在,并且是否该文件拥有SGID权限(有SGID权限为真)
    '-k 文件'
    判断该文件是否存在,并且是否该文件拥有SBit权限(有SBit权限为真)
    [ -w /root/intall.log] && echo "yes" || echo "no"
    只要有写权限即可,并不会判断是所有者或是所属组是否有权限
    

    两个文件比较

    '文件1 -nt 文件2'
    判断文件1的修改时间是否比文件2的新(如果新则为真)
    '文件1 -ot 文件2'
    判断文件1的修改时间是否比文件2的旧(如果旧则为真)
    '文件1 -ef 文件2'
    判断文件1是否和文件2的Inode号一致,可以理解为两个文件是否为同一个文件。
    这个判断用于判断硬链接是很好的方法
    ln /root/student.txt /tmp/stu.txt
    创建一个硬链接
    ​
    [/root/student.txt -ef /tmp/stu.txt] && echo "yes" || echo "no"
    yes
    用test测试下,果然很有用
    
  • 相关阅读:
    2019牛客多校第二场H题(悬线法)
    hdu6212 Zuma(区间dp)
    uva1428树状数组
    UVA1395 (最苗条的最小生成树)
    牛客练习赛53 C题bitset
    Love Live!
    Princess principal
    New Game!- 牛客
    P3311 [SDOI2014]数数
    [HNOI2008]GT考试
  • 原文地址:https://www.cnblogs.com/ssgao/p/8869651.html
Copyright © 2011-2022 走看看