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测试下,果然很有用
    
  • 相关阅读:
    iOS 开发--NSMutableArray使用枚举方法
    IOS开发中的几种设计模式
    iOS开发--提交github代码
    iOS开发--CornerStone上传静态库(.a文件)
    iOS开发swift--函数
    iOS开发--自动布局
    iOS开发--邮箱,电话号码,身份证正则表达式验证
    Redis学习笔记~实现消息队列比MSMQ更方便
    WebApi系列~基于RESTful标准的Web Api
    推荐一个简单、轻量、功能非常强大的C#/ASP.NET定时任务执行管理器组件–FluentScheduler定时器
  • 原文地址:https://www.cnblogs.com/ssgao/p/8869651.html
Copyright © 2011-2022 走看看