linux下的stat命令及对stat结构体的剖析

    xiaoxiao2021-03-25  176

    初识stat 因为之前没有接触过stat这个指令,于是就出现了下图 这样,我们就可以清楚地看到这条命令下可以执行哪些操作了。于是,我就取了其中的这么几条来看了一下

    -f  显示文件所在文件系统的信息

    -L  显示符号链接

    -t  简洁模式,只显示摘要信息

    在看之前,我们先ll一下,在里面找个文件,我选择了之前建好的tet.c文件

    我们可以看到-L显示了很多信息,包括size,Block,以及文件的三个时间(atime,ctime,mtime关于这三个时间在我的另一篇博客中有讲到点击打开链接),而-f命令出现了一个id及其他信息,-t就显得简洁很多,但是通过观察我们可以看到他包含了-f,-L中的一些信息。

    结构体stat

    Linux文件系统以块为单位存储信息,为了找到某一个文件所在的存储空间的位置用一个数据结构来对每个文件进行索引,而stat显示的就是该结构体信息,下面我们可以来看下这个结构体。

    struct stat {

            mode_t     st_mode;       //文件对应的模式,文件,目录等

            ino_t      st_ino;       //inode节点号

            dev_t      st_dev;        //设备号码

            dev_t      st_rdev;       //特殊设备号码

            nlink_t    st_nlink;      //文件的连接数

            uid_t      st_uid;        //文件所有者

            gid_t      st_gid;        //文件所有者对应的组

            off_t      st_size;       //普通文件,对应的文件字节数

            time_t     st_atime;      //文件最后被访问的时间

            time_t     st_mtime;      //文件内容最后被修改的时间

            time_t     st_ctime;      //文件状态改变时间

            blksize_t st_blksize;    //文件内容对应的块大小

            blkcnt_t   st_blocks;     //伟建内容对应的块数量

          };

    stat结构体中的st_mode 则定义了下列数种情况:     S_IFLNK 0120000     符号连接     S_IFREG 0100000     一般文件     S_IFBLK 0060000     区块装置     S_IFDIR 0040000     目录     S_IFIFO 0010000     先进先出     S_ISUID 04000     文件的拥有者在执行中的id位     S_ISGID 02000     文件的所属组在执行中的id位     S_ISVTX 01000     文件的sticky位     S_IRUSR(S_IREAD) 00400     文件所有者具可读取权限     S_IWUSR(S_IWRITE)00200     文件所有者具可写入权限     S_IXUSR(S_IEXEC) 00100     文件所有者具可执行权限     S_IRGRP 00040             用户组具可读取权限     S_IWGRP 00020             用户组具可写入权限     S_IXGRP 00010             用户组具可执行权限     S_IROTH 00004             其他用户具可读取权限     S_IWOTH 00002             其他用户具可写入权限     S_IXOTH 00001             其他用户具可执行权限 为了方便理解,我们在说一下Linux中的三类人:拥有者(u),所属组(g),其他人(o).

                              Linux文件的三种权限:只读(r),只写(w),可执行(x),无权限(-)    

    转载请注明原文地址: https://ju.6miu.com/read-2337.html

    最新回复(0)