如何在 Mac OS 中从命令行获取八进制文件权限

在 Mac 上以八进制格式获取文件权限

命令行用户可能熟悉使用 chmod 以数字或八进制格式设置文件权限,例如运行“chmod 755 文件名”之类的命令,但您是否想过如何获得八进制格式的文件权限?

如果你想通过命令行查看或查看任何文件或文件夹权限的八进制数值,你可以转向 Mac OS 中的 stat 命令来执行此操作。

我们假设您在命令行方面具有一定的经验和熟练程度,如果您没有,那么本文可能与您无关。大多数 Mac 用户只会按照别处所述通过 Mac Finder 查看或更改文件权限(即使那样) ,而这篇特定文章针对的是更高级的用户。

如何在 Mac 上获取数字 chmod 权限值

首先,从 Mac 上的 /Applications/ 启动终端应用程序并使用以下命令:

stat -f %A file.txt

例如,该命令可能会输出如下内容:

$ stat -f %A wget-1.18.tar.gz
644

在此示例中,“644”是该文件权限的八进制值。

或者,您可以使用 -f 和 %OLp(是的,这是大写的“o”而不是零),假设文件也是如此,输出将是相同的:

stat -f %OLp /Applications/System Preferences.app

该命令的示例输出可能如下所示,显示了目标项目的八进制数字值权限:

$ stat -f "%OLp" '/Applications/System Preferences.app'
775

在此示例中,“系统偏好设置”应用程序的八进制权限值为 775。

如何以八进制值获取文件权限在 Mac 上从命令行

你不需要使用引号,但如果你出于某种原因需要转义文件名或路径,或者出于脚本目的,它们很容易像这样放置:

stat -f "%OLp" '/Applications/System Preferences.app'

-f 标志用于格式,您可以使用“man stat”从 stat 的手册页中阅读有关 stat 输出的特定格式选项的更多信息。

在后一种命令情况下,“O”(大写 o)专门用于实现八进制输出。

出于多种原因,了解文件或文件夹的确切数字权限非常有用,如果您正在调整各种项目的权限,或者即使您是 在 Mac 上移动文件并希望保持准确的权限并在事后验证.还有无数其他用途,尤其是当您在 Mac 上运行任何类型的服务器时。

无论命名约定如何大写,这些命令在几乎任何版本的 macOS、MacOS 或 Mac OS X 中都可以相同地检索八进制权限。然而,值得注意的是,在 Mac 上获取八进制权限的方法与 Linux 世界的其他地方不同,因此如果您从 Linux 世界来到 Mac,您需要调整 stat 命令标志以准确获取八进制格式的权限,我们将在接下来快速介绍。

在 Linux 中从命令行获取八进制文件权限

为了完整起见,我们还将简要讨论在 Linux 世界中获取八进制权限值,您可以在其中使用以下内容获取八进制文件权限:

stat -c "%a %n" /Path/To/File

您还可以更简单地使用 stat -c 命令:

stat -c %a /Path/To/File.txt

当然只要输入的目标文件相同,输出的数值都是一样的。

同样,后两种方法是特定于 Linux 的,您需要使用上面进一步概述的方法来获取 Mac OS 中文件权限的八进制值。

您知道在 Mac 上检索文件权限数值的任何其他方法吗?在下面的评论中分享它们!