以下是 shell 中常用的判断文件属性的选项,在 shell 脚本中可直接拿来对文件属性进行判别。

-a

检查文件是否存在

-b

检查是否为块特殊文件[1]

-c

检查是否为字符特殊文件[2]

-d

检查是否为文件夹

-e

检查文件是否存在

-f

检查是否为常规文件[3]

-g

检查gid[4]是否被置位

-G

检查是否有相同的组ID

-k

检查防删除位是否被置位

-L

检查是否为符号链接[5]

-n

判断字符串长度是否不为0

-O

检查文件是否被当前进程的user ID拥有

-p

检查文件是否为FIFO[6]特殊文件或命名管道[7]

-r

检查文件是否可读

-s

检查文件大小是否大于0

-S

检查文件是否为socket文件

-t

检查文件描述符是否打开

-u

检查uid[8]是否被置位

-w

检查文件是否可写

-x

检查文件是否可执行

-z

判断字符串长度是否为0

注:

    1. 块特殊文件(block special file),提供对固定大小的块传输的设备(例如磁盘)的访问权限

    2. 字符特殊文件(character special file),提供对单个字符为传输单位的设备(例如终端)的访问权限

    3. 常规文件(regular file),文本文件或二进制文件,区别于文件夹、符号链接或套接字文件等等

    4. setgid: 该权限只对目录有效。目录被设置该位后,任何用户在此目录下创建的文件都具有和该目录所属的组相同的组

    5. 符号链接(symbolic link),该文件包含了另一个文件的路径名。可以是任意文件或目录,也可以链接不同文件系统的文件

    6. FIFOfirst in first out

    7. 命名管道(named pipe)是一种有名字的,建立在pipe server和一个(或多个)pipe client之间的单向或双向的通信管道。一个命名管道的所有实例都会共享一个相同的pipe name,但是每个实例都有他自己的缓冲区和句柄(handle),并且为客户端/服务器的通讯提供一个单独的导管

    8. setuid:设置使文件在执行阶段具有文件所有者的权限。典型的文件是 /usr/bin/passwd。如果一般用户执行该文件,则在执行过程中,该文件可以获得root权限,从而可以更改用户的密码

Logo

更多推荐