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

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

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

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

前面显示的所有字段是什么?

答案1

按输出顺序;

-rwxrw-r--    1    root   root 2048    Jan 13 07:11 afile.exe
  • 文件权限 ( -rwxrw-r--),
  • (硬)链接数量 ( 1),
  • 业主姓名 ( root),
  • 所有者组 ( root),
  • 文件大小(以字节为单位)( 2048),
  • 最后修改时间 ( Jan 13 07:11),以及
  • 文件/目录名 ( afile.exe)

文件权限显示如下;

  • 第一个字符最常见的是-,ld。 Ad表示目录,a-表示常规文件,l是符号链接(或软链接),其他字母用于其他类型的特殊文件
  • 三组字符,三次,表示所有者、组和其他的权限:
    • r = 可读
    • w = 可写
    • x = 可执行文件(对于文件)或可访问(对于目录)
  • 后面可能会跟有扩展权限的一些其他字符,例如标有+.

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

  • 常规文件(显示为-
  • 所有者可读、可写和可执行 ( rwx)
  • 组可读、可写,但不可执行 ( rw-)
  • 可读但不可被其他用户写入或执行 ( r--)

硬链接的数量意味着inode具有的名称的数量,即创建的链接ln 没有选项-s

答案2

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

-rwxrw-r--    10    root   root 2048    Jan 13 07:11 afile.exe
?UUUGGGOOOS   00  UUUUUU GGGGGG ####    MON DD XX:XX FILENAME
^ ^  ^  ^ ^    ^      ^      ^    ^      ^            ^- Filename.
| |  |  | |    |      |      |    |      \-------------- Time of last modification.
| |  |  | |    |      |      |    \--------------------- File Size OR for directory size of the metadata. (Size is *usually* in bytes on modern systems; See below.)
| |  |  | |    |      |      \-------------------------- 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 机器上,默认列出块大小(无需显式使用命令行选项)的情况很少见。

特殊/替代访问标志通常是一个空格,但在某些平台上,它可能用于指示存在特殊/替代访问模式(例如 WIN32 上的 ACL 和安全描述符等),并且变化很大 - 请参阅您的手册、手册页、信息工具或诸如此类的东西。

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

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

顺便说一句,如果您找不到ls自己的手册/信息页面 ( man ls/ info ls),请尝试在“coreutils”包 ( info coreutils) 中查找。另请注意,在更常见的平台中,Microsoft 平台往往不能很好地转换为ls输出,因此您可能会在输出中看到奇怪的行为、标志或其他异常信息,具体取决于您的版本的ls编译方式、链接的内容反对等

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

答案3

ls在 GNU 系统上,它在信息页面中有非常详细的描述。要找到它,您所需要做的就是:只需打开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.

答案4

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

相关内容