FreeBSD查找文件或目录的chmod数值
时间:2020-01-09 10:38:32 来源:igfitidea点击:
我需要找出FreeBSD系统上文件的数值。
例如,为/etc/resolv.conf
文件获取644
而不是-rw-r--r--
。
有没有办法在我的bash shell脚本中获得此值?
您需要使用stat命令查看有关文件的信息。
用法
基本语法为:
stat file stat [options] file
例子
要查看有关/etc/resolv.conf的信息,请执行:
$ stat /etc/resolv.conf
输出示例:
1314290432 258051 -rw-r--r-- 1 root wheel 4294967295 57 "Jan 24 01:02:44 2016" "Oct 12 16:30:41 2015" "Oct 12 16:30:41 2015" "Oct 12 16:30:41 2015" 4096 1 0x800 /etc/resolv.conf
要查看详细的输出(就像Linux一样),将-x选项传递给stat,请执行:
$ stat -x /etc/resolv.conf
输出示例:
FreeBSD stat命令输出
使用stat命令获取文件的chmod数值
传递-f format选项以使用指定格式显示信息,如下所示:
stat -f "%OLp" /path/to/file stat -f "%OLp" /etc/resolv.conf perm=$(stat -f "%OLp" /etc/resolv.conf) echo "$perm"
输出示例:
使用stat命令直接获取值
其中:
-f" Format"
使用给定格式显示有关文件的信息。- %格式字符串与printf格式相似,它们以%开头,然后是一系列格式化字符。
- O将左填充的填充字符设置为0字符,而不是空格。
- L从p的字符串形式(最后或下面的选项)中选择许可位。
- p显示文件的模式(如ls -lTd中的文件权限的数字值)。
使用原始信息提取文件的数值
运行以下命令:
$ stat -r /etc/resolv.conf | awk '{ print }'
输出示例:
0100644
您可以使用以下方法来获取最后四位数字:
x=$(stat -r /etc/resolv.conf | awk '{ print }') cut -c 4-8 <<<"$x"
输出示例:
0644
关于Linux用户的说明
出于相同目的,请在Linux上尝试以下命令:
## Linux stat syntax ## stat -c '%a' /etc/resolv.conf ## Or use find command, may work on unix-like system. See find man page. ## find /etc/ -name resolv.conf -printf "%m\n"
输出示例:
644