【问题标题】:UNIX / Linux / Mac OSX get permission of file as numberUNIX / Linux / Mac OSX 获取文件作为数字的权限
【发布时间】:2013-01-29 00:59:19
【问题描述】:

这一定很简单,但完全画了一个空白。我可以通过使用 ls -la 来查看文件的权限,它可以给出如下内容:

-rwxr-xr-x   1 james  staff   68  8 Feb 13:33 basic.sh*
-rw-r--r--   1 james  staff   68  8 Feb 13:33 otherFile.sh*

如何将其转换为与chmod 一起使用的数字,例如chmod 755 otherFile.sh(无需进行手动转换)。

【问题讨论】:

  • 请注意,这可能会使您的研究更容易:Mac OS X 是 BSD UNIX,任何 UNIX 解决问题的方法也可以。 (许多 Linux 方式也是如此。)
  • 这是个好建议,谢谢@Jesper。

标签: macos posix file-permissions


【解决方案1】:

您应该能够使用stat 命令而不是ls。通过查看manpage,这应该可以获取文件权限:

for f in dir/*
do
    perms=$(stat -f '0%Hp%Mp%Lp' $f)
    echo "$f has permissions $perms"
done

(虽然我现在不在我的 Mac 上,因此无法测试它)。

【讨论】:

  • @AJP,通过对手册页的进一步研究,我认为您需要指定 Hp、Mp 和 Lp 才能获得所有文件权限。请查看我的编辑。
  • 是的,我的编辑只是为了表明我只想要 755 部分,以便我可以将它与 chmod 一起使用来更改读取、写入和执行的权限。但是您的回答确实提供了完整的权限。
  • @AJP 我不明白这两个答案怎么可能是正确的。你是说stat -f '%Hp%Mp%Lp' stat -f '%Lp' 给出相同的结果吗?
  • 不,他们给出不同的结果,stat -f '%Lp' 是我想要的。
  • @AJP 嗯,这似乎不符合您的问题的要求,因为它只返回文件权限的用户部分;您在问题中显示的示例具有所有(用户、组和其他)文件权限。
【解决方案2】:

stat -f "%Lp" [filename] 在 OS X 10.8 中为我工作。

【讨论】:

  • 奇怪,10.7 中stat 的手册页使这些选项看起来应该像在 10.8 中那样工作。你遇到了什么错误?
  • 嗯,这很奇怪,我认为您的回答类似于:stat -c "%a %w" [filename] 这不起作用。不过,您的回答确实有效。
  • 注:Linux 使用:stat -c '%a' [filename]
猜你喜欢
  • 2014-10-01
  • 2011-06-02
  • 2017-06-27
  • 1970-01-01
  • 2011-05-27
  • 2017-12-21
  • 2017-05-08
  • 2013-01-29
  • 2016-08-15
相关资源
最近更新 更多