【发布时间】:2011-12-16 04:06:16
【问题描述】:
我正在尝试测试文件是否在 bash 脚本中为所有者设置了执行位。
我知道if [ -x filename ] 检查运行语句的用户的执行权限,但我需要知道所有者是否拥有它。有没有办法指定所有者?
【问题讨论】:
标签: bash permissions
我正在尝试测试文件是否在 bash 脚本中为所有者设置了执行位。
我知道if [ -x filename ] 检查运行语句的用户的执行权限,但我需要知道所有者是否拥有它。有没有办法指定所有者?
【问题讨论】:
标签: bash permissions
您可以使用stat 获取文件权限,并使用另一个命令解析它们以获得您想要的字符。
stat -c %A someFile
返回类似:
-rw-rw-r--
编辑:给你:
stat -c %A someFile | sed 's/...\(.\).\+/\1/'
如果所有者已执行,则返回 - 或 x。
编辑 2:为了完整起见:
if [ `stat -c %A someFile | sed 's/...\(.\).\+/\1/'` == "x" ]
then
echo "Owner has execute permission!"
fi
编辑 3:如果您更喜欢数字权限:
stat -c %a /path/to/a/file 将输出 600 或 700 或任何 3 位 base-8 数字。
【讨论】:
%a 是一种很棒的格式。检索第 4 个字符的更简单方法是 stat -c %A someFile | cut -c4。