Linux:文件的状态和属性

文件的状态和属性

在linux中,文件的状态和属性查看有两种方式:命令方式和函数方式

1、文件的状态和属性

(1)What(什么是文件的状态和属性)

文件状态:

访问时间相关、文件类型、文件大小、硬链接数

文件属性:

读写执行的权限属性

2、命令方式查看文件的状态和属性

(1) file命令

cpp 复制代码
file test.cpp -b/-i/-F/-L
  • -b:只显示文件类型和文件编码,不显示文件名
  • -i:显示文件的MIME类型
  • -F:设置输出字符串的分隔符
  • -L:针对软链接文件,直接显示指向文件的信息

(2) stat命令

stat命令显示文件或目录的详细属性信息包括文件系统状态,比ls命令输出的信息更详细

cpp 复制代码
stat -f/-c/-t/-L test.cpp
  • -f:只显示文件所在文件系统的信息
  • -c:查看文件的单个属性信息
  • -t:简洁模式,只显示摘要信息,不显示文件属性描述
  • -L:查看软链接所指向文件的信息

3、函数方式查看文件的状态和属性

stat/lstat 函数的功能和 stat 命令的功能是一样的, 只是应用场景不一样;

cpp 复制代码
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
int stat(const char *pathname, struct stat *buf);
int lstat(const char *pathname, struct stat *buf);
  • pathname:文件名
  • buf:返回值,存储了文件pathname的文件状态和属性信息
  • return:0表示调用成功,-1表示失败
cpp 复制代码
struct stat {
    dev_t          st_dev;        	// 文件设备编号
    ino_t           st_ino;        	// inode节点
    mode_t      st_mode;      		// 文件的类型和存取的权限, 16位整形数  -> 常用
    nlink_t        st_nlink;     	// 文件的硬连接数目,刚建立的文件值为1
    uid_t           st_uid;       	// 用户ID
    gid_t           st_gid;       	// 组ID
    dev_t          st_rdev;      	// (设备类型)若此文件为设备文件,则为其设备编号
    off_t            st_size;      	// 文件字节数(文件大小) --> 常用
    blksize_t     st_blksize;   	// 块大小(文件系统的I/O 缓冲区大小)
    blkcnt_t      st_blocks;    	// block块数
    time_t         st_atime;     	// 最后一次访问时间
    time_t         st_mtime;     	// 最后一次修改时间
    time_t         st_ctime;     	// 最后一次改变时间
};
相关推荐
JJJennie77729 分钟前
MAI Gateway技术揭秘:大模型网关能做什么?从原理到落地
linux·服务器·网络·ai网关
风哥2号3 小时前
数据库教程FGMT02‑生产环境Linux+Oracle19c安装配置与项目实战
linux·数据库·ffmpeg
wuminyu6 小时前
Kafka中sendfile与mmap实现机制解析
java·linux·c语言·jvm·c++
新时代牛马6 小时前
嵌入式网络完整篇:从LwIP/以太网驱动到 Linux netdev 与排障
linux·网络·php
猿与禅7 小时前
Linux(Ubuntu)入门到实战:系统管理、常用命令与权限体系完整指南
linux·ubuntu·apt·进程管理·系统运维·用户权限·vi/vim
前端世界7 小时前
Linux服务器实战:NTP时间同步、SELinux权限与rsyslog日志管理,一次搞懂三大运维问题
linux·运维·服务器
Android系统攻城狮7 小时前
Linux Gstreamer深度解析之gst_audio_converter_new调用流程与实战(二十)
linux·运维·服务器·gstreamer音视频·音视频进阶
H_oRIZoN_12 小时前
Linux入门DAY41(51 单片机 串口与通信协议)
linux·运维·单片机
GeW13 小时前
RHCE备考别瞎学!按这个计划走,30天提高通过率,快速拿证
linux
Escalating_xu14 小时前
【System V 信号量】从 P/V 原语到 Builder 封装:写出可控、可清理的进程互斥组件
java·linux·开发语言·jvm