如何比较两个文件之间的文件权限?

如何比较两个文件之间的文件权限?

我正在尝试编写一个检查脚本,以确保两个文件具有相同的权限。有几种方法可以考虑权限,最基本的是十六进制值(例如777)。如何在 bash 中比较两个不同常规文件的权限?

touch a b
chmod 777 a
# What can I use to get the `777` value property from `a`?
if a.perms == b.perms; then
  echo "File permissions match!"
fi

答案1

stat,使用正确的选项,似乎提供了一种比较此属性的方法,但不能与任意权限参数(例如777+x)进行比较。为此,您需要选择适当的表示形式(例如%A%a)。更多信息请参见手册页

$ echo "$(stat -c '%a' a)"
777
perms_a="$(stat -c '%a' a)"
perms_b="$(stat -c '%a' b)"
if [ ${perms_a} = ${perms_b} ]; then
  echo "Permissions match!"
else
  echo "NO match."
fi

相关内容