在不使用ls -l命令的情况下查找文件权限
时间:2020-01-09 14:16:18 来源:igfitidea点击:
问题描述:我需要找到文件许可并将其存储到shell变量中。
如何在不解析ls -l输出的情况下找到文件权限?
解决方法:使用GNU stat命令显示文件或文件系统状态。
它具有以特定格式显示输出的选项。
显示/etc/passwd文件的统计信息
执行以下命令:
$ stat /etc/passwd
输出:
File: `/etc/passwd' Size: 1675 Blocks: 8 IO Block: 4096 regular file Device: 802h/2050d Inode: 7899368 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2007-12-05 08:20:31.000000000 +0530 Modify: 2007-12-04 23:36:50.000000000 +0530 Change: 2007-12-04 23:36:50.000000000 +0530
以八进制格式显示`访问权限:
$ stat -c %a /etc/passwd
输出:
644
以易于阅读的格式打印访问权限,输入:
$ stat -c %A /etc/passwd
输出:
-rw-r--r-
将访问权限以八进制格式存储到shell变量中:
$ VAR=$(stat -c %a /etc/passwd) $ echo $VAR
文件的其他有效格式序列
%b:分配的块数(请参见%B)%B:报告的每个块的大小(以字节为单位)%d:十进制设备号%C:SELinux安全上下文%D:十六进制设备号%f:十六进制的原始模式%F:文件类型%g:所有者的组标识%G:所有者的组名%h:硬链接数%i:索引节点号%n:文件名%N:引用的文件名,如果是符号链接则取消引用%o:I/O块大小%s:总大小,以字节为单位%t:十六进制的主要设备类型%T:次设备类型,十六进制%u:所有者的用户标识%U:所有者的用户名%x:上次访问时间%X:自纪元以来的最后访问时间(以秒为单位)%y:上次修改时间%Y:自纪元以来的最后修改时间,以秒为单位%z:上次更改时间%Z:自纪元以来的最后更改时间,以秒为单位

