当使用 GNUstat探测文件系统时,有许多格式序列可用于--format/--printf参数;特别是这个
%f Raw mode in hex
Run Code Online (Sandbox Code Playgroud)
没有多大意义。与 %a 访问模式相比,某些内容可能(您可以用 看到stat --format '%f %a')原始模式为 41ed,但访问模式为 755,或者原始模式为 81a4,访问模式为 644。
那么“原始模式”是什么意思?
And*_*rew 10
破译“十六进制原始模式”的含义有两个部分;第一个是它在hex,但访问模式通常用八进制描述:
41ed 16 = 40775 8 81a4 16 = 100644 8
如果您查看/tmp,它通常设置了受限删除标志(“粘滞位”):
$ ls -ld /tmp drwxrwxrwt 17 根 4096 2012-05-31 13:45 /tmp $ stat --format '%f %a' /tmp 第 43 章 1777
并转换:
43ff 16 = 41777 8
stat 函数 ( man 2 stat)的程序员手册中描述了“十六进制原始模式” ,注意它们是八进制值:
为 st_mode 字段定义了以下标志: S_IFMT 0170000 文件类型位字段的位掩码 S_IFSOCK 0140000 套接字 S_IFLNK 0120000 符号链接 S_IFREG 0100000 常规文件 S_IFBLK 0060000 块设备 S_IFDIR 0040000 目录 S_IFCHR 0020000 字符设备 S_IFIFO 0010000 先进先出 S_ISUID 0004000 设置 UID 位 S_ISGID 0002000 设置组 ID 位(见下文) S_ISVTX 0001000 粘滞位(见下文) S_IRWXU 00700 文件所有者权限掩码 S_IRUSR 00400 所有者有读权限 S_IWUSR 00200 所有者有写权限 S_IXUSR 00100 所有者有执行权限 S_IRWXG 00070 组权限掩码 S_IRGRP 00040 组有读权限 S_IWGRP 00020 组有写权限 S_IXGRP 00010 组有执行权限 S_IRWXO 00007 其他人的权限掩码(不在组中) S_IROTH 00004 其他人有读取权限 S_IWOTH 00002 其他人有写权限 S_IXOTH 00001 其他人有执行权限
(奇怪的是,在线手册页缺少这一部分。)
这是一个位域,我们可以看到最后四位数字匹配访问模式;前导数字(十六进制)与文件类型匹配,因此 81a4 的十六进制模式对应于“目录,模式 0644”,而 41ed 的十六进制模式对应于“常规文件,模式 0775”。
| 归档时间: |
|
| 查看次数: |
2776 次 |
| 最近记录: |