ls -al输出中的字段是什么意思?


218

ls -al命令显示以下输出;

-rwxrw-r--    10    root   root 2048    Jan 13 07:11 afile.exe

前一个显示中的所有字段是什么?


L在这些位置中意味着什么。...
Lin-man

1
请阅读第二个答案。它是文件类型标志;常规文件(-),目录文件(d),块文件(b),字符设备文件(c),命名管道文件或仅管道文件(p),符号链接文件(l),套接字文件。linuxnix.com/file-types-in-linux
White先生,

Answers:


215

按输出顺序;

-rwxrw-r--    1    root   root 2048    Jan 13 07:11 afile.exe
  • 文件权限,
  • 链接数,
  • 所有者名称,
  • 所有者组,
  • 文件大小,
  • 最后修改时间,以及
  • 文件/目录名称

文件权限显示如下:

  • 第一个字符是-ld,d表示目录,一行表示文件,l是符号链接(或软链接)-特殊类型的文件
  • 三组字符,三遍,分别表示所有者,组和其他用户的权限:
    • r =可读
    • w =可写
    • x =可执行

在您的示例中-rwxrw-r--,这意味着显示的行是:

  • 常规文件(显示为-)
  • 所有者可读,可写且可执行(rwx)
  • 可读,可写,但不能按组(rw-)执行
  • 其他人(r--)可读但不可写或可执行

14
有两种以上的文件类型。-不是非目录,它是常规文件,有不止rwx权限。在大多数系统上,第一个字段还用于指示是否存在其他属性,例如ACL,安全属性或其他扩展属性。另请注意,对于符号链接,符号链接的目标也会显示在的输出中ls -l
斯特凡Chazelas

12
第一个字符可以具有不同的值(例如b,D , and p`)。维基百科上有完整的解释。
ashes999 2014年

13
领域的数字是解释不清。对于文件,这意味着硬链接数。对于目录:目录内的目录数+该目录本身+
1。– yanpas

13
什么number of links意思 谢谢。
tommy.carstensen

3
info ls有更多的信息
ctrl-alt-delor

94

“ ls”命令的输出取决于“ ls”的版本,使用的选项,使用的平台等。从您的示例中可以看出,您是通过典型的un * x(例如Linux)使用它的,并可能使用典型的现代“ ls”版本。在这种情况下:

-rwxrw-r--    10    root   root 2048    Jan 13 07:11 afile.exe
?UUUGGGOOOS   00  UUUUUU GGGGGG ####    ^-- date stamp and file name are obvious ;-)
^ ^  ^  ^ ^    ^      ^      ^    ^
| |  |  | |    |      |      |    \--- File Size
| |  |  | |    |      |      \-------- Group Name (for example, Users, Administrators, etc)
| |  |  | |    |      \--------------- Owner Acct
| |  |  | |    \---------------------- Link count (what constitutes a "link" here varies)
| |  |  | \--------------------------- Alternative Access (blank means none defined, anything else varies)
| \--\--\----------------------------- Read, Write and Special access modes for [U]ser, [G]roup, and [O]thers (everyone else)
\------------------------------------- File type flag

我不确定为什么您列出的示例文件的链接计数如此之高。一些平台对构成“链接”的概念有些奇怪。这些通常包括硬链接和符号链接,以及目录条目(这就是目录通常具有较高链接数的原因-它的父级只有一个链接,目录在.条目中有指向自身的链接,而每个子目录都有通过..)返回的链接。

某些版本和/或命令行标志将列出使用的块数,而不是字节数。块大小为1024字节的文件系统会将所有大小最大为1024字节的文件列出为“ 1”,表示使用了1个块,从1025到2048为“ 2”列出了2个块,依此类推。但是,在大多数现代的un * x机器上,很少会默认列出块大小(不显式使用命令行选项)。

特殊/替代访问标志通常是一个空格,但是在某些平台上,它可能用于表示存在特殊/替代访问模式(例如WIN3​​2上的ACL和安全描述符等),并且变化很大-请查阅手册,手册页,信息工具或其他。

权限(模式)标志(UUUGGGOOO)是三组三个字符,其中第一组是“用户”(即所有者),第二组是“组”,第三组是“其他”(即其他每个人) ;既不是所有者也不是组的任何人)。每组中的三个权限标志通常是r-表示用户/组/其他可以读取文件(r)或不能读取文件(-),后跟w-指示它们是否可以写入文件(您可以拥有可写入的文件,但无法读取,听起来可能很奇怪!),第三个字符是其他模式的“ catch-all”标志,通常类似于xexecute(对于目录而言,意味着您可以尝试访问目录内容),还是-没有。sS用于setuid和/或setgid程序,或其他不太常见的字符;请参阅“ ls”文档以获取它将显示的模式字符。

最后,第一个字符是文件类型。通常为以下之一:d用于目录,l用于符号链接(硬链接通常显示时没有其自身的特殊字符)或-用于普通文件。各种文件系统还有许多其他但很少见的文件类型。前十个字符(文件类型和权限)在Wikipedia上讨论。同样,您的文档将准确告诉您命令支持和显示哪种文件类型。

顺便说一句,如果找不到“ ls”本身的“ man / info”页面(“ man ls” /“ info ls”),请尝试查找“ coreutils”包(“ info coreutils”)。还要注意,在较常见的平台中,Microsoft平台往往无法很好地转换为“ ls”输出,因此,根据您的“ ls”版本的不同,您可能会在输出中看到奇怪的行为,标志或其他异常信息。编译,链接的内容等

还有一个警告:文件时间戳记通常是文件的上次修改日期/时间,而不是文件的创建时间。实际上,在一个非* x的文件系统上,没有文件创建时间的记录。ctime字段并不像在FAT / NTFS文件系统上那样表示“创建时间”,而是表示“ inode [C] hange时间”,即上一次修改inode的时间。在两个系统上,“ mtime”(最后经过[M]次验证的)时间戳和atime(最后经过[A]次访问/读取的)时间戳是相同的-尽管精度(例如FAT的粒度为2秒)和时区可能有所不同。


4
哪个系统的链接计数中包含符号链接?
celtschk 2014年

1
对不起,我不清楚。.我所知道的系统都没有在链接数中包含符号链接。例如,在Windows中,“外壳链接”被视为链接,但是大多数控制台命令会将其视为普通文件。这包括ls,它将包括在链接计数中。据我所知,除非对“ ls”的来源进行了其他修改,否则它仅报告操作系统报告的链接计数。
2014年

1
包括符号链接和.lnk文件,需要遍历整个目录。仅列出文件。这将是waaaaaaaaaaaaaaay慢。它仅包含硬链接。这是文件具有的目录条目的数量。(它由垃圾回收器使用。当引用计数变为零时,该文件将被删除。)
ctrl-alt-delor

1
通常,我对操作系统(OS)和文件系统(FS)的理解是可以达成共识的,但是我不时看到某些操作系统和FS的一些奇怪之处。虽然,它并不总是OS / FS的一部分。有时候,这些奇怪的结果是尝试将工具从一个操作系统移植到另一个操作系统,然后尝试针对新平台进行调整的结果(例如,EXT和FAT / NTFS之间的CTIME字段之间的差异)以及NTFS实现了不同种类的“链接”(shell链接,重新解析点等),因此很难给出准确而统一的定义。
CM

1
附加说明:目录的文件大小仅是目录元数据的大小,而不是目录下文件的总大小。
Wisbucky

31

在GNU系统上,它在ls信息页面中有非常详细的描述。找到它所需要做的一切:只需打开man ls并在最后找到完整文档的链接:info coreutils 'ls invocation'

这是它的报价:

`-l'
`--format=long'
`--format=verbose'
     In addition to the name of each file, print the file type, file
     mode bits, number of hard links, owner name, group name, size, and
     timestamp (*note Formatting file timestamps::), normally the
     modification time.  Print question marks for information that
     cannot be determined.

     Normally the size is printed as a byte count without punctuation,
     but this can be overridden (*note Block size::).  For example, `-h'
     prints an abbreviated, human-readable count, and
     `--block-size="'1"' prints a byte count with the thousands
     separator of the current locale.

     For each directory that is listed, preface the files with a line
     `total BLOCKS', where BLOCKS is the total disk allocation for all
     files in that directory.  The block size currently defaults to 1024
     bytes, but this can be overridden (*note Block size::).  The
     BLOCKS computed counts each hard link separately; this is arguably
     a deficiency.

     The file type is one of the following characters:

    `-'
          regular file

    `b'
          block special file

    `c'
          character special file

    `C'
          high performance ("contiguous data") file

    `d'
          directory

    `D'
          door (Solaris 2.5 and up)

    `l'
          symbolic link

    `M'
          off-line ("migrated") file (Cray DMF)

    `n'
          network special file (HP-UX)

    `p'
          FIFO (named pipe)

    `P'
          port (Solaris 10 and up)

    `s'
          socket

    `?'
          some other file type

     The file mode bits listed are similar to symbolic mode
     specifications (*note Symbolic Modes::).  But `ls' combines
     multiple bits into the third character of each set of permissions
     as follows:

    `s'
          If the set-user-ID or set-group-ID bit and the corresponding
          executable bit are both set.

    `S'
          If the set-user-ID or set-group-ID bit is set but the
          corresponding executable bit is not set.

    `t'
          If the restricted deletion flag or sticky bit, and the
          other-executable bit, are both set.  The restricted deletion
          flag is another name for the sticky bit.  *Note Mode
          Structure::.

    `T'
          If the restricted deletion flag or sticky bit is set but the
          other-executable bit is not set.

    `x'
          If the executable bit is set and none of the above apply.

    `-'
          Otherwise.

     Following the file mode bits is a single character that specifies
     whether an alternate access method such as an access control list
     applies to the file.  When the character following the file mode
     bits is a space, there is no alternate access method.  When it is
     a printing character, then there is such a method.

     GNU `ls' uses a `.' character to indicate a file with an SELinux
     security context, but no other alternate access method.

     A file with any other combination of alternate access methods is
     marked with a `+' character.

谢谢!我不确定上市时第一栏中c的“特殊字符文件”含义/dev/
Bruno Bronosky

3

第一列是文件模式,第二列是文件具有的链接号,第三列和第四列是所有者的名称和文件所属的组。下一栏说明文件的字节数(某些ls实现可以-h选择以更用户友好的形式查看此信息)。最后两列指示时间戳记和文件名。您已阅读手册页以获取更多信息。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.