我正在尝试编写一个检查脚本,以确保两个文件具有相同的权限。有几种方法可以考虑权限,最基本的是十六进制值(例如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