stat用法:获取文件对应权限的数字

简介:

题目:文件属性为-rw-r--r-- 对应权限为644,如何使用命令获取权限对应的数字??


举例如下:

1
2
[baby@localhost ~]$ ll -l
-rw-r--r-- 1 baby wheel 38 Oct 12 16:29 1.txt

使用stat命令可以查看
[baby@localhost ~]$ stat 1.txt
File: `1.txt'
Size: 38 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 390954 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 503/ baby) Gid: ( 10/ wheel)
Access: 2015-10-12 16:29:34.674990005 +0800
Modify: 2015-10-12 16:29:32.248990536 +0800
Change: 2015-10-12 16:29:32.248990536 +0800


取出对应的数字则需要使用正则sed awk 或cut ,head,tail命令;

方法1:使用正则或命令取
head,tail,cut

1
2
[baby@localhost ~]$ stat 1.txt | head  -n4| tail  -n1| cut  -d  "/"  -f1| cut  -d  "("  -f2
0644


sed,cut

1
2
[baby@localhost ~]$ stat 1.txt | sed  -n  '4p' | cut  -d  "/"  -f1| cut  -d  "("  -f2
0644

sed,awk

1
2
[baby@localhost ~]$ stat 1.txt | sed  -n  '4p' | awk  -F "/"  '{print $1}' | awk  -F "("  '{print $2}'
0644


方法2:stat -c 命令

1
2
[baby@localhost ~]$ stat -c %a 1.txt
644

注意:如何想到法二的思考过程,比答题更重要。当命令结果包含我们需要的内容的时候,我们要想到是否有具体的参数能够一步达到我们需要的结果。

man stat 查看帮助
-c --format=FORMAT
use the specified FORMAT instead of the default; output a new line after each use of FORMAT
使用特殊格式代替默认输出;
常用的参数有如下:
%a Access rights in octal         8进制显示访问权限,0644
%A Access rights in human readable form         以人类可读的形式输出,
%F File type         文件的类型
%g Group ID of owner         所属组gid的号码
%G Group name of owner         所属组的名称
%h Number of hard links         硬连接的数量
%i Inode number         inode的值
%n File name         文件名
%o I/O block size         IO块大小
%s Total size, in bytes         文件的总大小,字节显示;
%u User ID of owner         所属主的uid号码
%U User name of owner         所属主的名称
%x Time of last access         最后访问的时间
%X Time of last access as seconds since Epoch         最后访问时间的时间戳
%y Time of last modification         最后修改的时间
%Y Time of last modification as seconds since Epoch         最后修改时间的时间戳
%z Time of last change         最后更改的时间
%Z Time of last change as seconds since Epoch         最后更改的时间的时间戳


使用参数结果如下:
[baby@localhost ~]$ ls -l 1.txt
-rw-r--r-- 1 baby wheel 38 Oct 12 16:29 1.txt
[baby@localhost ~]$ stat -c %a 1.txt
644
[baby@localhost ~]$ stat -c %A 1.txt
-rw-r--r--
[baby@localhost ~]$ stat -c %b 1.txt
8
[baby@localhost ~]$ stat -c %B 1.txt
512
[baby@localhost ~]$ stat -c %d 1.txt
64768
[baby@localhost ~]$ stat -c %F 1.txt
regular file
[baby@localhost ~]$ stat -c %g 1.txt
10
[baby@localhost ~]$ stat -c %G 1.txt
wheel
[baby@localhost ~]$ stat -c %u 1.txt
503
[baby@localhost ~]$ stat -c %U 1.txt
baby
[baby@localhost ~]$ stat -c %h 1.txt
1
[baby@localhost ~]$ stat -c %i 1.txt
390954
[baby@localhost ~]$ stat -c %n 1.txt
1.txt
[baby@localhost ~]$ stat -c %o 1.txt
4096
[baby@localhost ~]$ stat -c %s 1.txt
38


题目和方法2的思想来源于51cto老男孩博客。非常感谢。






本文转自 模范生 51CTO博客,原文链接:http://blog.51cto.com/mofansheng/1703428,如需转载请自行联系原作者
目录
相关文章
|
9月前
|
运维 监控 网络协议
面对全球化的泼天流量,出海企业观测多地域网络质量
网络监控与分析在保证网络可靠性、优化用户体验和提升运营效率方面发挥着不可或缺的作用,对于出海企业应对复杂的网络环境和满足用户需求具有重要意义,为出海企业顺利承接泼天流量保驾护航。
383 225
|
8月前
|
安全 BI 数据安全/隐私保护
基于条件的访问控制——RBAC
基于角色的访问控制(RBAC)根据员工的角色和职责分配权限,确保用户仅能访问所需资源,降低数据泄露风险。通过ADManager Plus等工具,企业可以高效管理权限,减少手动操作,提升安全性并保护敏感信息。RBAC的核心原则是最小权限,即只为员工分配完成工作所需的权限。这不仅提高了工作效率,还减少了未经授权访问的风险,是防范网络威胁的有效手段。
140 3
|
开发工具 Linux
Keepalived 日志配置与启动配置
在Redhat系统下,可以使用下面的方法将keepalived的日志输出到/var/log/下的某个文件里:  1.将keepalived日志输出到local0:  vim /etc/sysconfig/keepalived  KEEPALIVED_OPTIONS="-D -d -S 0"  2.
3543 0
|
移动开发 前端开发 JavaScript
基于 HTML5 和 Canvas 开发的在线图片编辑器
基于 HTML5 和 Canvas 开发的在线图片编辑器
340 0
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
嵌入式系统的应用趋势有哪些?
嵌入式系统是指将我们的操作系统和功能软件集成于计算机硬件系统之中,形成一个专用的计算机系统。
157 2
|
机器学习/深度学习 监控 算法
基于YOLOv8深度学习的智能肺炎诊断系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战
基于YOLOv8深度学习的智能肺炎诊断系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战
|
安全 数据库
【Debian】配置aide入侵检测服务
基于debian系统。aide主要功能检测系统文件,当系统文件发生变化,如/etc/passwd文件出现差异,那么aide将会认为系统遭受入侵被增添用户
2415 0
|
容器 .NET 开发框架
.net core 注入中的三种模式:Singleton、Scoped 和 Transient
我们都知道在 Startup 的 ConfigureServices 可以注入我们想要的服务,那么在注入的时候有三种模式可以选择,那么我们在什么时候选择什么样的模式呢? 在讲注入模式之前,我觉得很有必要了解服务生存期的概念! 服务生存期:ASP.NET Core 提供了一个内置的服务容器 IServiceProvider 负责管理服务的生命周期,从被依赖注入容器创建开始(就是将服务注入到你要使用的类的构造函数中),然后框架负责创建依赖关系的实例,并在不再需要时对其进行处理(就是说等我们调用完服务时,容器会自己去对注入的服务进行释放)。
2066 0
|
存储 编解码 前端开发
阿里云服务器计算型c6与计算型c7有何区别?应该如何选择?
阿里云服务器计算型c6与计算型c7有何区别?二者都同属于计算型实例,但是计算型c6属于第六代云服务器,而计算型c7属于第七代云服务器,是最新一代的云服务器实例。那么它们之间具体有哪些区别呢?作为用户的我们应该如何选择呢?
1584 0
阿里云服务器计算型c6与计算型c7有何区别?应该如何选择?