暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

使用stat命令检查Linux上的文件状态

TIAP 2021-08-30
434

GNU coreutils包中包含的stat命令提供了各种元数据,包括文件大小、inode位置、访问权限和SELinux上下文,以及关于文件和文件系统的创建和修改时间。这是一种收集信息的便捷方法,通常需要使用多个不同的命令来获取这些信息。


在Linux中安装stat

在Linux上,你可能已经安装了stat命令,因为它是核心程序包的一部分,默认情况下通常与Linux发行版捆绑在一起。

如果没有安装stat,可以使用包管理器安装coreutils。

或者,你可以下载源代码编译coreutils

(下载地址:https://www.gnu.org/software/coreutils/)。


获取文件的状态

运行stat提供一个关于特定文件或目录的易读的输出:

    $ stat planets.xml
    File: planets.xml
    Size: 325 Blocks: 8 IO Block: 4096 regular file
    Device: fd03h/64771d Inode: 140217 Links: 1
    Access: (0664/-rw-rw-r--) Uid: (1000/tux) Gid: (100/users)
    Context: unconfined_u:object_r:user_home_t:s0
    Access: 2021-08-17 18:26:57.281330711 +1200
    Modify: 2021-08-17 18:26:58.738332799 +1200
    Change: 2021-08-17 18:26:58.738332799 +1200
    Birth: 2021-08-17 18:26:57.281330711 +1200


    它可能很容易阅读,但仍然有很多信息。以下是stat所涵盖的内容:

    • File: 文件名

    • Size: 以字节为单位的文件大小

    • Blocks: 硬盘上为此文件保留的块数

    • IO Block: 文件系统块的大小

    • regular file: 文件类型(常规文件、目录、文件系统)

    • Device: 文件所在的设备

    • Inode: 文件所在的索引节点号

    • Links: 指向该文件的链接数

    • Access, UID, GID: 文件权限、用户和组所有者

    • Context: SELinux 上下文

    • Access, Modify, Change, Birth: 访问、修改、更改状态和创建文件的时间戳


    简洁输出

    对于非常了解输出的人,或者希望使用其他实用程序(如awk)解析输出的人,可以使用 --terse(-t)选项,该选项可以格式化输出,而不使用标题或换行符。

      $ stat --terse planets.xml
      planets.xml 325 8 81b4 100977 100 fd03 140217 1 0 0 1629181617 1629181618 1629181618 1629181617 4096 unconfined_u:object_r:user_home_t:s0


      选择自己的格式

      你可以使用--printf选项和类似于printf的语法定义自己的输出格式。stat报告的每个属性都有一个格式序列(%C表示SELinux上下文,%n表示文件名,等等),因此你可以选择希望在报告中看到的内容。

        $ stat --printf="%n\n%C\n" planets.xml
        planets.xml
        unconfined_u:object_r:user_home_t:s0
        $ $ stat --printf="Name: %n\nModified: %y\n" planets.xml
        Name: planets.xml
        Modified: 2021-08-17 18:26:58.738332799 +1200


        以下是一些常见的格式序列:

        • %a 访问权限

        • %F 文件类型

        • %n 文件名称

        • %U 用户名称

        • %u 用户ID

        • %g 组 ID

        • %w 创建时间

        • %y 修改时间


        详情大家可以参考stat手册或者coreutils手册。


        文件信息

        如果你曾经尝试过解析ls-l的输出,那么你会喜欢stat命令的灵活性。你并不总是需要stat提供的所有默认信息,但是当你确实需要部分或全部信息时,该命令是很好用的。无论你是以默认格式读取其输出,还是创建自己的查询,stat命令都可以让你轻松访问有关数据的数据。


        文章转载自TIAP,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

        评论