shell入门(7)——文件判断操作
程序员文章站
2022-04-05 14:51:35
...
文件判断操作
shell中有专门对文件的状态属性进行判断的测试运算符,主要有以下几个
- -b file:是否为
块设备文件
- -c file:是否为
字符设别文件
- -d file:是否为目录
- -f file:是否为普通文件
- -g file:文件是否设置了
SGID 位
- -k file:是否设置了
粘着位(Sticky Bit)
- -p file:文件是否为
有名管道
- -u file:文件是否设置了
SUID 位
- -r file:文件是否可读
- -w file:文件是否可写
- -x file:文件是否可执行
- -s file:文件是否为空(文件大小是否大于0),不为空返回 true。
- -e file:文件(包括目录)是否存在
概念解释
块设备文件
Block Device Driver称为块设备,是以固定大小长度来传送资料,可以进行随机存取资料的设备,块设备文件是供块设备读取的文件,常见的块设备有硬碟机(硬盘)或光碟机等字符设备文件
Character Device Drive称为字符设备,是以不定长度的字元传送资料的,按先后顺序读取资料的设备,字符设备文件是供字符设备读取的文件,常见的字符设备有打印机,显示器等有名管道(FIFO)
有名管道是持久稳定的它们存在于文件系统中,能让无关联的进程之间交换数据,是Linux进程间通信的一种
SGID位
Set GIDd的简称,g出现在文件所属组权限的执行位上面,它对普通二进制文件和目录都有效。当它作用于普通文件时,和SUID类似,在执行该文件时,用户将获得该文件所属组的权限。当SGID作用于目录时,意义就非常重大了。当用户对某一目录有写和执行权限时,该用户就可以在该目录下建立文件,如果该目录用SGID修饰,则该用户在这个目录下建立的文件都是属于这个目录所属的组。SUID位
Set UID的简称,s出现在文件拥有者权限的执行位上,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限粘着位
SBIT是Sticky Bit的简称,出现在其他用户权限的执行位上,它只能用来修饰一个目录。当某一个目录拥有SBIT权限时,则任何一个能够在这个目录下建立文件的用户,该用户在这个目录下所建立的文件,只有该用户自己和root可以删除,其他用户均不可以。
使用案例
#!/bin/bash
file="/usr/xiao/myshell/case.sh"
if [ -r $file ]
then
echo "文件可读"
else
echo "文件不可读"
fi
if [ -w $file ]
then
echo "文件可写"
else
echo "文件不可写"
fi
if [ -x $file ]
then
echo "文件可执行"
else
echo "文件不可执行"
fi
if [ -f $file ]
then
echo "文件为普通文件"
else
echo "文件为特殊文件"
fi
if [ -d $file ]
then
echo "文件是个目录"
else
echo "文件不是个目录"
fi
if [ -s $file ]
then
echo "文件不为空"
else
echo "文件为空"
fi
if [ -e $file ]
then
echo "文件存在"
else
echo "文件不存在"
fi
结果输出
文件可读
文件可写
文件可执行
文件为普通文件
文件不是个目录
文件不为空
文件存