该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
)
文件权限显示如下;
- 第一个字符最常见的是
-
,l
或d
。 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
选择以更用户友好的形式查看此信息)。最后两列指示时间戳和文件名。您可以阅读手册页以获取更多信息。