检查文件所有者权限

apo*_*002 28 permissions bash

我正在尝试测试文件是否在bash脚本中为所有者设置了执行位.

我知道if [ -x filename ]检查运行该语句的用户的执行权限,但我需要知道所有者是否拥有它.有没有办法指定所有者?

Chr*_*uma 42

您可以使用stat获取文件权限,并使用其他命令解析它们以获取所需的字符.

stat -c %A someFile
Run Code Online (Sandbox Code Playgroud)

返回类似于:

-rw-rw-r--
Run Code Online (Sandbox Code Playgroud)

编辑:你走了:

stat -c %A someFile | sed 's/...\(.\).\+/\1/'
Run Code Online (Sandbox Code Playgroud)

返回-或者x如果所有者已执行.

编辑2:为完成起见:

if [ `stat -c %A someFile | sed 's/...\(.\).\+/\1/'` == "x" ] 
then
  echo "Owner has execute permission!"
fi
Run Code Online (Sandbox Code Playgroud)

编辑3:如果您更喜欢数字权限:

stat -c %a /path/to/a/file 将输出60​​0或700或任何3位数的基数为8的数字.

  • if [$(stat -c%some-file)!= 600]; 那......是我想要的. (16认同)
  • `%a`是一种很棒的格式.检索第4个字符的更简单方法是`stat -c%A someFile | 切-c4`. (4认同)