终端命令:ls -l 显示什么内容?

44
我知道它输出的是“长”版本,但每个部分的含义是什么?
在我的Mac上,当我键入
ls -l /Users 

我理解

total 0
drwxr-xr-x+ 33 MaxHarris  staff  1122 Jul  1 14:06 MaxHarris
drwxrwxrwt   8 root       wheel   272 May 20 13:26 Shared
drwxr-xr-x+ 14 admin      staff   476 May 17 11:25 admin
drwxr-xr-x+ 44 hugger     staff  1496 Mar 17 21:13 hugger

我知道第一行是权限,虽然我不知道顺序是什么。如果可以解释一下那就太好了。那么后面的数字是什么意思呢?

基本上,这些东西每一个代表什么意思?为什么有时用户名会重复写两次,而其他时候却不匹配?


7
man ls 会告诉你相关的信息。 - Gilles Quénot
这是一个很好的资源,适合那些想要在 ls -l 命令的上下文中获得完整权限解释的人使用:http://linuxcommand.org/lts0070.php - user993683
3
在我的情况下,man ls 没有提供关于每个列的具体信息。它只是在 -l 标志上说“使用长列表格式”。(Ubuntu 20.04) - starriet
3个回答

64

选项“-l”告诉命令使用长列表格式。它返回几列,分别对应于:

  • 权限
  • 硬链接数
  • 文件所有者
  • 文件组
  • 文件大小
  • 修改时间
  • 文件名

权限列中的第一个字母表示文件的类型。“d”表示目录,“-”表示普通文件(还有其他字符,但这些是基本的)。接下来的九个字符被划分为三组,每组一个权限。每个字母对应于读取、写入和执行权限,并且每个组对应于文件的所有者、文件的组以及其他所有人。

  • [文件类型] [所有者权限] [组权限] [其他人权限]

字符可以是以下四种选项之一:

  • r = 读取权限
  • w = 写入权限
  • x = 执行权限
  • - = 没有权限

最后,结尾处的“+”表示某些扩展权限。


11
"+"符号部分正确,表示扩展属性中存在访问控制列表(ACL)。还可以有"@"字符,表示存在扩展属性,例如苹果的隔离属性,在文件被从外部来源下载或复制时设置标志。 - TheDarkKnight

13
如果您输入以下命令
$ man ls

您将获得ls文档,其中部分内容如下:

长格式
如果给出-l选项,则为每个文件显示以下信息:文件模式、链接数、所有者名称、组名称、文件中的字节数、缩写月份、文件上次修改的日期、文件上次修改的小时、文件上次修改的分钟和路径名。此外,对于显示其内容的每个目录,在显示该目录中的文件信息之前,会单独显示在一个行上的该目录中文件使用的512字节块的总数。如果文件或目录具有扩展属性,则-l选项所打印的权限字段后面跟随“@”字符。否则,如果文件或目录具有扩展安全信息(例如访问控制列表),则-l选项所打印的权限字段后面跟随“+”字符。

man命令是“manual”的缩写,它显示的文章称为“man页面”; 尝试运行man manpages以了解更多信息。


3
这个信息在ls手册页中已经不再存在。它可以在哪里找到? - Drake P
@DrakeP 运行 man ls 是查看您正在运行的 macOS 版本特定文档的最佳选项。这里有一些关于如何在网上找到类似版本的信息:https://apple.stackexchange.com/a/374715/11282 - andrewdotn
@DrakeP 它仍然存在。这是因为上面的 man 页面适用于使用 BSD 工具的 macOS,它们与 Linux 中的 GNU 工具完全不同。 - phuclv

4

以下信息提供:

  • 权限
  • 链接硬链接数
  • 文件所有者
  • 该文件属于哪个组
  • 大小
  • 修改/创建日期和时间
  • 文件/目录名称

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接