Shell 必知必会 | 五、Shell 文件测试运算符,实例讲解

举报
Linux猿 发表于 2021/10/24 14:37:58 2021/10/24
【摘要】 🎈 作者:Linux猿 🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、面试、刷题、算法尽管咨询我,关注我,有问题私聊! 🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬

🎈 作者:Linux猿

🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、面试、刷题、算法尽管咨询我,关注我,有问题私聊!

🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬


在 Shell 编程中,文件测试运算符使用的很广泛,经常需要检测一个文件的属性,下面结合实例进行说明。

一、文件测试运算符
表1 文件测试运算符表
操作符    说明                                                  
-b file    检测文件是否是块设备文件,如果是,则返回 true。
-c file    检测文件是否是字符设备文件,如果是,则返回 true。
-d file    检测文件是否是目录,如果是,则返回 true。
-f file    检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。
-g file    检测文件是否设置了 SGID 位,如果是,则返回 true。
-u file    检测文件是否设置了 SUID 位,如果是,则返回 true。
-k file    检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。
-p file    检测文件是否是有名管道,如果是,则返回 true。
-r file    检测文件是否可读,如果是,则返回 true。
-w file    检测文件是否可写,如果是,则返回 true。
-x file    检测文件是否可执行,如果是,则返回 true。
-s file    检测文件是否为空(文件大小是否大于0),不为空返回 true。
-e file    检测文件(包括目录)是否存在,如果是,则返回 true。
二、常用实例
2.1 -d file 检测目录 

#!/bin/bash
 
file="/root"
if [ -d $file ]
then
    echo "$file is directory!"
else
    echo "$file is not directory!"
fi

输出:

[root@localhost Shell]# ./dir.sh 
/root is directory!
[root@localhost Shell]#

2.2 -f file 检测普通文件

#!/bin/bash
 
file="/root/regularFile"
if [ -f $file ]
then
    echo "$file is regular file!"
else
    echo "$file is not regular file!"
fi

输出:

[root@localhost Shell]# ./dir.sh 
/root/regularFile is regular file!
[root@localhost Shell]#

2.3 -x file 检测文件可执行

#!/bin/bash
 
file="/root/Shell/dir.sh"
if [ -x $file ]
then
    echo "$file is executable file!"
else
    echo "$file is not executable file!"
fi

输出:

[root@localhost Shell]# ls -l dir.sh 
-rwxr-xr-x. 1 root root 145 2月   6 10:54 dir.sh
[root@localhost Shell]# ./dir.sh 
/root/Shell/dir.sh is executable file!
[root@localhost Shell]#

2.4 -e file 检测文件/目录存在

#!/bin/bash
 
file="/root"
if [ -e $file ]
then
    echo "$file is exist!"
else
    echo "$file is not exist!"
fi

输出:

[root@localhost Shell]# ./dir.sh 
/root is exist!
[root@localhost Shell]#

2.5 -b file 检测块设备文件

#!/bin/bash
 
if [ -b /dev/sda ]
then
    echo "/dev/sda is Block Device File!"
else
    echo "/dev/sda is not Block Device File!"
fi

输出为:

[root@localhost Shell]# ./dir.sh 
/dev/sda is Block Device File!
[root@localhost Shell]#

三、总结

文件测试运算符在 Shell 编程中经常使用,几个常用的运算符要记住。


CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、面试、刷题、算法尽管咨询我,关注我,有问题私聊!

欢迎小伙伴们点赞👍、收藏⭐、留言💬


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。