# 文件属性

# 相关命令

# stat

$ stat <file>...  # 查看指定文件的具体属性
       -c %a      # 只查看访问权限(用数值表示)
  • 例:
    [root@CentOS ~]# stat f1
    File: ‘f1’
    Size: 10240             Blocks: 24         IO Block: 4096   regular file
    Device: fd00h/64768d    Inode: 101970144   Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2019-12-02 17:52:45.722667339 +0800
    Modify: 2019-10-10 02:49:00.714000000 +0800
    Change: 2019-10-10 02:49:00.714000000 +0800
    Birth: -
    
    • 前两行:
      • File :文件名。
      • Size :文件大小,单位为 bytes 。
      • Blocks :该文件在磁盘中存储时,占用的 block 数。通常 block 大小为 4096 bytes 。
      • IO Block :文件系统读写该文件时,使用的 IO Block 大小,影响读写速度。它不一定等于存储时的 block 大小。
      • regular file :该文件类型为普通文件。
    • 第三行:
      • Device :该文件所在设备的编号。
      • Inode :该文件对应的 inode 的编号。
      • Links :指向该 inode 的硬链接数。
    • 第四行:
      • Access :文件的访问权限。
      • User id :文件所有者的用户 id 。
      • Group id :文件所有者的用户组 id 。
    • 最下方:
      • Access time :最后一次访问(只是读取)该文件的时间。
      • Modify time :最后一次改变该文件内容的时间。
      • Change time :最后一次改变该文件属性的时间。

# touch

$ touch <file>...       # 刷新文件的 Access time 和 Modify time(这会连带修改 Change time ),如果该文件不存在则创建一个空文件
        -a              # 只设置访问时间
        -m              # 只设置修改时间
        -d [时间字符串]  # 设置成指定时间(默认是当前时间)
        -r file1 file2  # 将前一个文件的时间属性复制给后一个文件
  • 例:
    touch f1              # 常用该命令临时创建一个空文件
    touch -d "2019-08-05 09:50:00" f1
    

# file

$ file <file>...        # 查看文件的类型
  • 例:
    [root@CentOS ~]# file /
    /: directory
    [root@CentOS ~]# echo hello | file -
    /dev/stdin: ASCII text
    [root@CentOS ~]# file /dev/stdin
    /dev/stdin: symbolic link to `/proc/self/fd/0'
    

# 隐藏的文件属性

# chattr

$ chattr <file>...  # 设置文件的隐藏属性
         +a         # 使文件已有的内容不能被修改、删除,只能追加内容(常用于日志文件)
         -a         # 用加号 + 加上某种属性,用减号 - 取消某种属性
         +i         # 使文件不能被删除、改名、移动、修改内容(常用于严格保护某个文件)
                    # 如果作用于目录,则不能在该目录下新建或删除文件,只能修改已有文件的内容。
         +S         # 当文件的内容被修改时,立即同步到磁盘
         +s         # 当删除该文件时,会用 0 填充其磁盘空间
         +u         # 当删除该文件时,会保留其磁盘数据

# lsattr

$ lsattr <file>...  # 显示文件的隐藏属性
  • 如果 Linux 上不存在 chattr、lsattr 命令,则需要安装:yum install e2fsprogs