shell脚本怎样判断文件是否存在

 更新时间:2023年06月06日 14:54:55   作者:大飞飞鱼  
这篇文章主要介绍了shell脚本怎样判断文件是否存在问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

shell脚本判断文件是否存在

在进行linux系统相关应用程序开发时,少不了要书写一些shell脚本,有时候要用到判断文件或者目录是否存在的脚本,本文笔者做一下笔记,已备后查。

shell判断文件是否存在的脚本如下:

//[ 与 ] 的前后必须有空格符
if [ -f /path/file.ext ] 
then 
     echo "The file exist"
else
     echo "The file doesn't exist"
fi
//判断某链接是否存在
if [ -L /path/link ] 
then 
    echo "The link exist"
else
    echo "The link doesn't exist"
fi

其实shell对于文件册测试有好几种选项开关

现在例举如下:

表达式测试含义
-a filepathfile exists. all files type
-b filepathfile exists and is a block special file.
-c filepathfile exists and is a character special file.
-d filepathfile exists and is a directory.
-e filepathfile exists (等同于 -a).
-f filepathfile exists and is a regular file.
-g filepathfile exists and has its setgid(2) bit set.
-G filepathfile exists and has the same group ID as this process.
-k filepathfile exists and has its sticky bit set.
-L filepathfile exists and is a symbolic link.
-n filepathstring length is not zero.
-o filepathNamed option is set on.
-O filepathfile exists and is owned by the user ID of this process.
-p filepathfile exists and is a first in, first out (FIFO) special file ornamed pipe.
-r filepathfile exists and is readable by the current process.
-s filepathfile exists and has a size greater than zero.
-S filepathfile exists and is a socket.
-t filepathfile descriptor number fildes is open and associated with aterminal device.
-u filepathfile exists and has its setuid(2) bit set.
-w filepathfile exists and is writable by the current process.
-x filepathfile exists and is executable by the current process.

shell脚本之文件是否存在、权限校验

判断目录是否存在

#判断目录是否存在,判断非加!号, [ ! -d '/home' ]
if [ -d '/home' ]
then
    echo "目录/home存在=========="
else
    echo "目录/home不存在========="
fi

判断文件是否存在

#判断文件是否存在
if [ -f '/home/docker.log' ]
then
    echo "文件/home/docker.log存在============="
else
    echo "文件/home/docker.log不存在==========="
fi

判断目录/文件是否存在

#判断文件是否存在,目录或文件存在都成立
if [ -e '/home' ]
then
    echo "/home存在=============="
else
    echo "/home不存在============"
fi

判断文件权限

#检测文件是否可读 -r ,可写 -w ,可执行 -x
if [ -r '/home/script/file.log' ]
then
    echo "文件/home/script/file.log存在并可读=============="
else
    echo "目录/home/script/file.log不存在或不可读=================="
fi

判断文件是否属于当前用户

#检测文件是否属于当前用户
file_path=/home/script/file.log
if [ -O $file_path ]
then
    echo "文件$file_path属于当前用户================="
else
    echo "文件$file_path不属于当前用户==============="
fi

判断文件是否与当前用户相同用户组

#检测文件是否存在,并且默认组与当前用户相同
file_path=/home/script/file.log
if [ -G $file_path ]
then
    echo "文件$file_path所属组与当前用户相同================="
else
    echo "文件$file_path所属组与当前用户不相同================"
fi

比较文件之间是否为新建

#检测文件file1是否比file2新
file1=/home/script/file.log
file2=/home/script/file_1.log
if [ $file1 -nt $file2 ]
then
    echo "文件$file1比文件$file2新=============="
fi
if [ $file1 -ot $file2 ]
then
    echo "文件$file1比文件$file2旧==============="
fi

复合条件判断文件

#判断既是文件 又 可读 ,用 && ,或用 ||
file=/home/script/file.log
if [ -f $file ] && [ -r $file ]
then
        echo "文件$file是文件,并且可读============="
fi

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Linux Shell脚本中的条件判断语句的使用方法

    Linux Shell脚本中的条件判断语句的使用方法

    在 Linux 系统中,Shell 脚本是自动化任务、系统管理、部署流程等场景下不可或缺的工具,而条件判断语句,则是 Shell 脚本实现逻辑控制的核心语法之一,本文将从基础语法讲起,逐步深入到实际应用场景帮助你更好地理解 Shell 条件判断的本质,需要的朋友可以参考下
    2026-03-03
  • 浅谈Shell中的函数

    浅谈Shell中的函数

    这篇文章主要介绍了Shell中函数的相关资料,帮助大家更好的理解和使用shell,感兴趣的朋友可以了解下
    2020-09-09
  • Linux应用调试之strace命令详解

    Linux应用调试之strace命令详解

    strace常用来跟踪进程执行时的系统调用和所接收的信号。下面通过本文给大家分享Linux应用调试之strace命令,需要的朋友参考下吧
    2017-12-12
  • Linux命令之lz4命令使用示例

    Linux命令之lz4命令使用示例

    lz4是一种非常快速的无损压缩算法,基于字节对齐LZ77系列压缩方案,它的特点是极快的解码器,每核速度可达多GB/s,通常在多核系统上达到RAM速度限制项目,这篇文章主要介绍了Linux命令之lz4命令,需要的朋友可以参考下
    2023-03-03
  • php在linux中可能用到的命令(推荐)

    php在linux中可能用到的命令(推荐)

    下面小编就为大家带来一篇php在linux中可能用到的命令(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • 详解shell 遍历文件夹内所有文件并打印绝对路径

    详解shell 遍历文件夹内所有文件并打印绝对路径

    本篇文章主要介绍了shell 遍历文件夹内所有文件并打印绝对路径,具有一定的参考价值,有兴趣的可以了解一下。
    2017-01-01
  • linux ar 命令的使用说明和实例讲解

    linux ar 命令的使用说明和实例讲解

    ar命令可以用来创建、修改库,也可以从库中提出单个模块。这篇文章主要介绍了linux ar 命令的使用说明和实例讲解的相关资料,需要的朋友可以参考下
    2016-10-10
  • Shell脚本一键安装Nginx服务自定义Nginx版本

    Shell脚本一键安装Nginx服务自定义Nginx版本

    这篇文章主要为大家介绍了Shell脚本一键安装Nginx服务,用户可自定义Nginx版本的脚本示例,有需要的朋友可以借鉴参考下,希望能够参考下
    2022-03-03
  • Shell脚本实现简单分割字符串

    Shell脚本实现简单分割字符串

    这篇文章主要介绍了Shell脚本实现简单分割字符串,本文讲解使用CUT命令实现以逗号、分号或其它分隔符来切割字符串,需要的朋友可以参考下
    2015-02-02
  • Linux Shell的一些使用小技巧收集

    Linux Shell的一些使用小技巧收集

    这篇文章主要介绍了Linux Shell的一些使用小技巧收集,本文收集了几十个小技巧,非常实用,需要的朋友可以参考下
    2014-12-12

最新评论