菜鸟科技网

Linux查看文件属性有哪些常用命令?

在Linux系统中,查看文件属性是日常管理和运维操作中的基础技能,掌握相关命令能够帮助用户快速了解文件类型、权限、所有者、大小、修改时间等关键信息,Linux提供了多种命令用于查看文件属性,其中最常用的是ls命令,此外还有statfilelsattrgetfacl等命令,它们各自侧重于不同的属性维度,以下将详细介绍这些命令的使用方法及其输出含义。

Linux查看文件属性有哪些常用命令?-图1
(图片来源网络,侵删)

基础文件属性查看命令:ls

ls是Linux中最常用的列表命令,通过不同选项可以显示文件的详细属性,默认情况下,ls仅显示文件名,而结合-l选项(长格式)会输出更丰富的信息,执行ls -l filename后,输出结果通常包含以下字段:

-rw-r--r-- 1 user group 4096 Oct 26 10:30 filename

各字段含义如下(从左到右):

  1. 文件类型与权限:第一个字符表示文件类型(为普通文件,d为目录,l为符号链接等),后续9字符分为3组,分别属主、属组、其他用户的读(r)、写(w)、执行(x)权限。
  2. 硬链接数:表示有多少个文件名指向同一索引节点。
  3. 属主用户:文件的所有者用户名。
  4. 属组用户:文件所属的组名。
  5. 文件大小:以字节为单位,使用-h选项可显示为人类可读格式(如KB、MB)。
  6. 修改时间最后一次修改的时间。
  7. 文件名:文件或目录的名称。

常用选项组合

  • -a:显示所有文件,包括隐藏文件(以开头)。
  • -h:以人类可读格式显示文件大小(如1K234M)。
  • -i:显示文件的inode号。
  • -R:递归显示子目录内容。

详细文件状态查看:stat

stat命令用于显示文件的详细状态信息,包括inode信息、访问时间、修改时间、状态改变时间等,比ls更全面,执行stat filename,输出可能如下:

Linux查看文件属性有哪些常用命令?-图2
(图片来源网络,侵删)
  File: filename
  Size: 4096        Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d  Inode: 131075      Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/   user)   Gid: ( 1000/  group)
Access: 2023-10-26 10:30:00.000000000 +0800
Modify: 2023-10-26 10:30:00.000000000 +0800
Change: 2023-10-26 10:30:00.000000000 +0800
 Birth: -

关键字段说明:

  • Size:文件大小(字节)。
  • Blocks:存储文件所占的块数(块大小通常为4KB)。
  • Inode:文件的唯一标识符。
  • Access/Modify/Change:分别表示最后访问时间、内容修改时间、状态(如权限、所有者)修改时间。
  • Uid/Gid:文件所有者的用户ID和组ID。

文件类型查看:file

file命令通过分析文件内容来判断文件类型,适用于识别二进制文件、脚本、压缩包等,执行file filename,输出可能为:

filename: ASCII text

常见类型包括:

  • ASCII text:纯文本文件。
  • ELF 64-bit LSB executable:64位可执行文件。
  • gzip compressed data:gzip压缩文件。
  • symbolic link to ...:符号链接文件。

扩展属性查看:lsattr与chattr

对于Linux特有的扩展文件属性(如不可修改、不可删除等),需使用lsattrchattr命令。lsattr用于查看文件的扩展属性,

Linux查看文件属性有哪些常用命令?-图3
(图片来源网络,侵删)
lsattr filename
----i-----------e- filename

常见扩展属性标志:

  • i:不可修改(immutable),即使root用户也不能删除或修改。
  • a:只能追加内容(append only)。
  • e:使用extent格式存储文件(ext4文件系统默认)。

访问控制列表查看:getfacl

getfacl用于查看文件的访问控制列表(ACL),这是传统权限(rwx)的扩展,支持更精细的权限控制。

getfacl filename
# file: filename
# owner: user
# group: group
# flags: -s-
user::rw-
group::r--
other::r--

输出显示属主、属组及其他用户的权限,若存在ACL条目,会额外显示user:group:default:开头的行。

综合对比与使用场景

以下表格总结了各命令的适用场景:

命令 主要功能 常用选项 适用场景
ls 列出文件基本信息(权限、大小等) -l, -h, -a, -i 快速查看文件常规属性
stat 显示详细文件状态(时间、inode等) 需要精确时间戳或inode信息时
file 识别文件类型 判断文件是否为可执行、文本或压缩包
lsattr 查看扩展文件属性 管理文件系统级特殊权限(如防删除)
getfacl 查看访问控制列表 检查ACL权限配置

相关问答FAQs

问题1:如何查看隐藏文件的详细属性?
解答:使用ls -la命令,其中-a选项会显示所有文件(包括隐藏文件,以开头),-l选项以长格式输出属性,查看.bashrc文件的属性可执行ls -la .bashrc,输出会包含权限、所有者、大小等信息。

问题2:如何区分文件的修改时间(Modify)和状态改变时间(Change)?
解答:通过stat命令可以明确查看这两个时间。Modify(mtime)最后一次修改的时间,例如用echo重写文件内容会更新此时间;Change(ctime)是文件状态(如权限、所有者、硬链接数)最后一次改变的时间,例如执行chmodchown会更新此时间,若仅修改文件内容而未改变状态,则mtime更新而ctime不变;反之,若仅改变权限(如chmod 755 file),则ctime更新而mtime不变。

分享:
扫描分享到社交APP
上一篇
下一篇