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