在不使用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
:自纪元以来的最后更改时间,以秒为单位