当前位置: 移动技术网 > 科技>操作系统>Linux > Linux中stat命令显示文件的基本使用教程

Linux中stat命令显示文件的基本使用教程

2018年04月26日  | 移动技术网科技  | 我要评论

中国人在非洲纪录片,威海无缝钢管,辣车网

用法:stat [选项]... 文件...
显示文件或文件系统的状态。

  -l, --dereference     跟随链接
  -f, --file-system     显示文件系统状态而非文件状态
  -c --format=格式      使用指定输出格式代替默认值,每用一次指定格式换一新行
      --printf=格式     类似 --format,但是会解释反斜杠转义符,不使用换行作
                                输出结尾。如果您仍希望使用换行,可以在格式中
                                加入"\n"
  -t, --terse           使用简洁格式输出
      --help            显示此帮助信息并退出
      --version         显示版本信息并退出

有效的文件格式序列(不使用 --file-system):

  %a    八进制权限
  %a   用可读性较好的方式输出权限
  %b   计算已分配块数(参见%b)
  %b   以字节为单位输出%b 所报告的每个块的大小
  %c   selinux 安全环境字符串
  %d    十进制设备编号
  %d    十六进制设备编号
  %f    十六进制原始模式
  %f    文件类型
  %g    文件的属组id
  %g    文件的属组组名
  %h    硬链接数量
  %i    inode 编号
  %m    挂载点
  %n    文件名
  %n    如果对象是一个符号链接,显示引用到的其它文件名
  %o    i/o 块大小
  %s    总计大小,以字节为单位
  %t    十六进制主设备类型
  %t    十六进制子设备类型
  %u    文件的属主id
  %u    文件的属主用户名
  %w    文件创建时间,若未知则显示"-"
  %w    从unix 元年起以秒计的文件创建时间,若未知则显示"-"
  %x    上次访问时间
  %x    从unix 元年起以秒计的上次访问时间
  %y    上次修改时间
  %y    从unix 元年起以秒计的上次修改时间
  %z    上次更改时间
  %z    从unix 元年起以秒计的上次更改时间

有效的文件系统格式序列:

  %a    非超级用户可用的剩余块数
  %b    文件系统的总数据块数
  %c    文件系统中文件节点总数
  %d    文件系统中空闲文件节点数
  %f    文件系统中空闲块数
  %i    十六进制文件系统id
  %i    允许的文件名最大长度
  %n    文件名
  %s    块大小(用于快速传输)
  %s    基本块大小(用于块计数)
  %t    十六进制类型描述
  %t    可读性较好的类型描述

注意:您的shell 内含自己的stat 程序版本,它会覆盖这里所提及的相应
版本。请查阅您的shell 文档获知它所支持的选项。


ls 命令及其许多参数提供了一些非常有用的文件信息。另一个不太为人所熟知的命令 stat 提供了一些更为有用的信息。
下面演示了如何对可执行文件“oracle”(位于 $oracle_home/bin 目录下)使用此命令。

复制代码
代码如下:

# cd $oracle_home/bin
# stat oracle
file: `oracle'
size: 93300148 blocks:182424 io block:4096 regular file
device: 343h/835d inode: 12009652 links: 1
access: (6751/-rwsr-s--x) uid:( 500/ oracle) gid:( 500/ dba)
access: 2006-08-04 04:30:52.000000000 -0400
modify: 2005-11-02 11:49:47.000000000 -0500
change: 2005-11-02 11:55:24.000000000 -0500

注意使用该命令获得的信息:除了通常的文件大小(也可以使用 ls -l 命令获得)以外,您还获得了该文件占用的块数。通常的 linux 块大小为 512 字节,因此一个大小为 93,300,148 字节的文件将占用 (93300148/512=) 182226.85 个块。由于块都是完整占用,因此该文件使用了一些整数个数的块。无需猜测就可以获得确切的块数。
您还可以从以上输出中获得文件所有权的 gid 和 uid,以及权限的八进制表示形式 (6751)。如果要将文件恢复到它现在具有的相同权限,可以使用 chmod 6751 oracle,而不是显式拼写这些权限。
以上输出最有用的部分是文件访问时间戳信息。该输出显示,该文件被访问的时间是 2006-08-04 04:30:52(显示在“access:”的旁边),即 2006 年 8 月 4 日上午 4:30:52。这是某个人开始使用数据库的时间。该文件的修改时间是 2005-11-02 11:49:47(显示在“modify:”的旁边)。最后,“change:”旁边的时间戳显示文件状态更改的时间。
stat 命令的修改符 -f 显示了有关文件系统(而非文件)的信息:

复制代码
代码如下:

# stat -f oracle
file: "oracle"
id: 0 namelen:255 type:ext2/ext3
blocks: total: 24033242 free: 15419301 available: 14198462 size: 4096
inodes: total: 12222464 free: 12093976

另一个选项 -t 显示了完全相同的信息,只不过是在一行中显示的:

复制代码
代码如下:

# stat -t oracle
oracle 93300148 182424 8de9 500 500 343 12009652 1 0 0 1154682061
1130950187 1130950524 4096

这对 shell 脚本非常有用,在 shell 脚本中可以使用一个简单的 cut 命令获得值以进行进一步处理。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网