欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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:文件(包括目录)是否存在

概念解释

  1. 块设备文件
    Block Device Driver称为块设备,是以固定大小长度来传送资料,可以进行随机存取资料的设备,块设备文件是供块设备读取的文件,常见的块设备有硬碟机(硬盘)或光碟机等

  2. 字符设备文件
    Character Device Drive称为字符设备,是以不定长度的字元传送资料的,按先后顺序读取资料的设备,字符设备文件是供字符设备读取的文件,常见的字符设备有打印机,显示器等

  3. 有名管道(FIFO)

有名管道是持久稳定的它们存在于文件系统中,能让无关联的进程之间交换数据,是Linux进程间通信的一种

  1. SGID位
    Set GIDd的简称,g出现在文件所属组权限的执行位上面,它对普通二进制文件和目录都有效。当它作用于普通文件时,和SUID类似,在执行该文件时,用户将获得该文件所属组的权限。当SGID作用于目录时,意义就非常重大了。当用户对某一目录有写和执行权限时,该用户就可以在该目录下建立文件,如果该目录用SGID修饰,则该用户在这个目录下建立的文件都是属于这个目录所属的组。

  2. SUID位
    Set UID的简称,s出现在文件拥有者权限的执行位上,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限

  3. 粘着位
    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

结果输出

文件可读
文件可写
文件可执行
文件为普通文件
文件不是个目录
文件不为空
文件存
相关标签: shell 脚本语言