ls.1

LS(1)

LS(1)

FreeBSD General Commands Manual

LS(1)

ls

列出目录内容

ls [-ABCFGHILPRSTUWZabcdfghiklmnopqrstuwxy1,] [--color=when] [-D format] [file ...]

对于命名目录以外类型 file 的每个操作数, ls 显示其名称以及任何请求的相关信息。 对于命名目录类型 file 的每个操作数, ls 显示该目录中包含的文件的名称,以及任何请求的相关信息。

如果没有给出操作数,则显示当前目录的内容。 如果给出了多个操作数,则首先显示非目录操作数;目录和非目录操作数分别按字典顺序排序。

可以使用以下选项:

-A

包括名称以点 (‘.’) 开头的目录条目,但 . 和 ... 自动为超级用户设置,除非指定了 -I

-B

强制打印文件名中的不可打印字符(由 ctype(3) 和当前语言环境设置定义)为 \xxx, 其中 xxx 是八进制字符的数值。 此选项未在 IEEE Std 1003.1-2008 (“POSIX.1”) 中定义。

-C

强制多列输出;这是输出到终端时的默认设置。

-D format

以长 (-l) 格式打印时,使用 format 格式化日期和时间输出。 参数 format 是 strftime(3) 使用的字符串。 根据格式字符串的选择,这可能会导致输出中的列数不同。 此选项覆盖 -T 选项。 此选项未在 IEEE Std 1003.1-2008 (“POSIX.1”) 中定义。

-F

在作为目录的每个路径名之后立即显示一个斜杠 (‘/’) ,在每个可执行文件之后显示一个星号 (‘*’) ,在每个符号链接之后显示一个 at 符号 (‘@’) ,一个等号 (‘=’) 在每个套接字之后,在每个空白之后有一个百分号 (‘%’) ,在每个之后的竖线 (‘|’) 是一个 FIFO 。

-G

启用彩色输出。 此选项等效于在环境中定义 CLICOLORCOLORTERM 并设置 --color=auto 。(见下文。) 这个功能可以通过删除 COLORLS 的定义来编译。 此选项未在 IEEE Std 1003.1-2008 (“POSIX.1”) 中定义。

-H

遵循命令行上的符号链接。 如果未指定 -F -、 -d-l 选项,则假定使用此选项。

-I

防止为超级用户自动设置 -A 。 此选项未在 IEEE Std 1003.1-2008 (“POSIX.1”) 中定义。

-L

如果参数是符号链接,则列出链接引用的文件或目录,而不是链接本身。 此选项取消 -P 选项。

-P

如果参数是符号链接,则列出链接本身而不是链接引用的对象。 此选项取消 -H-L 选项。

-R

递归列出遇到的子目录。

-S

在按字典顺序对操作数进行排序之前,先按大小排序(首先是最大文件)。

-T

以长 (-l) 格式打印时,显示文件的完整时间信息,包括月、日、小时、分钟、秒和年。 -D 选项可以更好地控制输出格式。 此选项未在 IEEE Std 1003.1-2008 (“POSIX.1”) 中定义。

-U

使用创建文件的时间进行排序或打印。 此选项未在 IEEE Std 1003.1-2008 (“POSIX.1”) 中定义。

-W

扫描目录时显示空白。 此选项未在 IEEE Std 1003.1-2008 (“POSIX.1”) 中定义。

-Z

显示每个文件的 MAC 标签;参见 maclabel(7) 。 此选项未在 IEEE Std 1003.1-2008 (“POSIX.1”) 中定义。

-a

包括名称以点 (‘.’) 开头的目录条目。

-b

-B 一样,但尽可能使用 C 转义码。 此选项未在 IEEE Std 1003.1-2008 (“POSIX.1”) 中定义。

-c

使用上次更改文件状态的时间进行排序或打印。

--color=when

输出基于 when 的彩色转义序列,可以设置 always 、 autonever 。

always 将使 ls 总是输出颜色。 如果 TERM 未设置或设置为无效终端,则 ls 将在没有 termcap(5) 帮助的情况下回退到显式 ANSI 转义序列。 如果不带参数指定 --coloralways 是默认值。

auto 将使 ls 输出基于 termcap(5) 的转义序列,但前提是 stdout 是 tty 并且指定了 -G 标志或设置了 COLORTERM 环境变量且不为空。

never 将禁用颜色,而不考虑环境变量。 当既没有指定 --color 也没有指定 -G 时, never 是默认值。

为了与 GNU coreutils 兼容, ls 支持 yesforce 等同于 always 、 nonone 等同于 never , ttyif-tty 等同于 auto

-d

目录被列为普通文件(不递归搜索)。

-f

输出未排序。 此选项打开 -a 。 它还否定了 -r -、 -S-t 选项的效果。 正如 IEEE Std 1003.1-2008 (“POSIX.1”) 所允许的,此选项对 -d -、 -l -、 -R-s 选项没有影响。

-g

此选项无效。 它仅可用于与 4.3BSD, 兼容,用于在长 (-l) 格式输出中显示组名。 此选项与 IEEE Std 1003.1-2008 (“POSIX.1”) 不兼容。

-h

-l 选项一起使用时,请使用单位后缀:字节、千字节、兆字节、千兆字节、太字节和千兆字节,以便使用以 2 为基数的大小将位数减少到四位或更少。 此选项未在 IEEE Std 1003.1-2008 (“POSIX.1”) 中定义。

-i

对于每个文件,打印文件的文件序列号(inode 号)。

-k

这与将环境变量 BLOCKSIZE 设置为 1024 具有相同的效果,除了它还会使其左侧的任何 -h 选项无效。

-l

(小写字母 “ell” 。) 以长格式列出文件,如下面的 长格式 小节所述。

-m

流输出格式;跨页列出文件,用逗号分隔。

-n

以数字形式显示用户和组 ID,而不是在长 (-l) 输出中转换为用户或组名。

-o

在长 (-l) 输出中包含文件标志。 此选项与 IEEE Std 1003.1-2008 (“POSIX.1”) 不兼容。 有关文件标志及其含义的列表,请参见 chflags(1) 。

-p

如果该文件是目录,则在每个文件名后写一个斜杠 (‘/’) 。

-q

强制将文件名中的非图形字符打印为字符 ‘?’ ;这是输出到终端时的默认设置。

-r

颠倒排序的顺序。

-s

显示每个文件在文件系统中使用的块数。 块大小和目录总数按照下面的 长格式 小节中的描述进行处理,除非(如果未请求长格式)当输出为单列时,即使请求多列输出,也不输出目录总数。

-t

按修改时间降序排列(最近修改时间排在前)。 如果两个文件具有相同的修改时间戳,则按字典顺序升序对它们的名称进行排序。 -r 选项反转这两种排序顺序。

请注意,这些排序顺序是矛盾的:时间顺序是降序,字典排序是升序。 这种行为是 IEEE Std 1003.2 (“POSIX.2”) 规定的。 此功能可能会导致列出以顺序名称存储在 FAT 文件系统上的文件的问题,例如来自数码相机的文件,其中可能有多个具有相同时间戳的图像。 在这种情况下,无法按拍摄顺序列出照片。 要确保时间和字典排序的排序顺序相同,请设置环境变量 LS_SAMESORT 或使用 -y 选项。 这会导致 ls 在对具有相同修改时间戳的文件进行排序时反转字典排序顺序。

-u

使用上次访问时间,而不是上次修改文件的时间进行排序 (-t) 或打印 (-l) 。

-w

强制原始打印不可打印的字符。 当输出不是到终端时,这是默认设置。 此选项未在 IEEE Std 1003.1-2001 (“POSIX.1”) 中定义。

-x

-C 相同,不同之处在于多列输出是使用跨列而不是向下排序的条目生成的。

-y

设置 -t 选项时,按与时间输出相同的顺序对字母输出进行排序。 这与设置 LS_SAMESORT 的效果相同。 有关详细信息,请参阅 -t 选项的说明。 此选项未在 IEEE Std 1003.1-2001 (“POSIX.1”) 中定义。

-1

(数字 “one” 。) 强制输出为每行一个条目。 当输出不是到终端时,这是默认设置。

-

(逗号)当设置了 -l 选项时,使用 localeconv(3) 返回的非货币分隔符(通常是逗号或句点)将文件大小分组并以千位分隔。 如果未设置区域设置,或者区域设置没有非货币分隔符,则此选项无效。 此选项未在 IEEE Std 1003.1-2001 (“POSIX.1”) 中定义。

-1 -、 -C -、 -x-l 选项都相互覆盖;最后一个指定的决定了使用的格式。

-c -、 -u-U 选项都相互覆盖;指定的最后一个确定使用的文件时间。

-S-t 选项相互覆盖;指定的最后一个确定使用的排序顺序。

-B -、 -b -、 -w-q 选项都相互覆盖;指定的最后一个确定用于不可打印字符的格式。

-H -、 -L-P 选项都相互覆盖(部分或全部);它们按指定的顺序应用。

默认情况下, ls 每行列出一个条目到标准输出;例外是终端或指定 -C-x 选项时。

文件信息以一个或多个 ⟨blank 显示,分隔与 -i -、 -s-l 选项相关的信息。⟩

如果给出 -l 选项,则为每个文件显示以下信息:文件模式、链接数、所有者名称、组名、MAC 标签、文件中的字节数、缩写月份、日期文件是上次修改时间、上次修改时间文件、上次修改时间文件和路径名。

如果文件的修改时间在过去或将来超过 6 个月,并且未指定 -D-T ,则显示最后修改的年份,而不是小时和分钟字段。

如果所有者或组名不是已知的用户名或组名,或者给出了 -n 选项,则显示数字 ID。

如果文件是字符特殊文件或块特殊文件,则文件的设备号显示在大小字段中。 如果文件是符号链接,则链接到文件的路径名以 “->” 开头。

目录内容列表之前是标记为文件系统中使用的块总数,这些文件被列为目录内容(可能包括也可能不包括 . 和 .. 以及其他以点开头的文件,取决于其他选项)。

默认块大小为 512 字节。 可以使用选项 -k 或环境变量 BLOCKSIZE 设置块大小。 输出中的块数将四舍五入,因此字节数至少与相应文件系统块(可能具有不同大小)使用的一样多。

-l 选项下打印的文件模式由条目类型和权限组成。 条目类型字符描述文件的类型,如下:

-

常规文件。

b

阻止特殊文件。

c

字符专用文件。

d

目录。

l

符号链接。

p

FIFO 。

s

嵌套字。

w

Whiteout.

接下来的三个字段分别是三个字符:所有者权限、组权限和其他权限。 每个字段具有三个字符位置:

  1. 如果为 r ,则文件可读;如果 - ,它是不可读的。

  2. 如果是 w ,文件是可写的;如果 - ,它是不可写的。

  3. 以下第一项适用:

    S

    如果在所有者权限中,则该文件不可执行并且设置了 set-user-ID 模式。 如果在组权限中,则文件不可执行并且设置了 set-group-ID 模式。

    s

    如果在所有者权限中,该文件是可执行的并且设置了 set-user-ID 模式。 如果在组权限中,该文件是可执行的并且设置了 setgroup-ID 模式。

    x

    该文件是可执行的或目录是可搜索的。

    -

    该文件既不是可读、可写、可执行的,也不是 set-user-ID 或 set-group-ID 模式,也不是粘性的。 (见下文。)

    接下来的两个仅适用于最后一组中的第三个字符(其他权限)。

    T

    设置了粘滞位(模式 1000 ),但没有执行或搜索权限。 (参见 chmod(1) 或 sticky(7) 。)

    t

    粘性位被设置(模式 1000 ),并且是可搜索的或可执行的。 (参见 chmod(1) 或 sticky(7) 。)

如果文件有 ACL,则下一个字段包含一个加号 (‘+’) 字符,如果没有,则包含一个空格 (‘ ’) 。 ls 实用程序不显示实际的 ACL;使用 getfacl(1) 来做到这一点。

以下环境变量会影响 ls 的执行:

BLOCKSIZE

如果设置了此项,则其值(向上舍入为 512 或向下舍入为 512 的倍数)将被 -l-s 选项用作块大小(以字节为单位)。 有关详细信息,请参阅 长格式 小节。

CLICOLOR

使用 ANSI 颜色序列来区分文件类型。请参阅下面的 LSCOLORS 。 除了 -F 选项中提到的文件类型之外,还显示了一些额外的属性(setuid 位设置等)。 着色取决于具有适当 termcap(5) 功能的终端类型。 默认的 “cons25” 控制台具有适当的功能,但是要在 xterm(1) 中显示颜色,例如,必须将 TERM 变量设置为 “xterm-color” 。 其他终端类型可能需要类似的调整。 如果没有将输出定向到终端,则着色会被静默禁用,除非定义了 CLICOLOR_FORCE 变量或 --color 设置为 “always” 。

CLICOLOR_FORCE

如果输出未定向到终端,通常会禁用颜色序列。 这可以通过设置此变量来覆盖。 TERM 变量仍然需要引用支持颜色的终端,否则无法确定要使用的颜色序列。

COLORTERM

请参阅上面的 CLICOLOR 说明。

COLUMNS

如果此变量包含表示十进制整数的字符串,则将其用作显示多文本列输出的列位置宽度。 ls 实用程序根据提供的宽度计算要显示的路径名文本列数。(参见 -C-x 。)

LANG

确定 long -l 格式输出中的日期和月份顺序时使用的语言环境。 有关详细信息,请参阅 environ(7) 。

LSCOLORS

当使用 CLICOLORCOLORTERM 启用颜色时,此变量的值描述了为哪个属性使用什么颜色。 此字符串是 fb 格式对的串联,其中 f 是前景色, b 是背景色。

颜色指示符如下:

a

黑色

b

红色

c

绿色

d

棕色

e

蓝色

f

品红

g

青色

h

浅灰色

A

粗黑色,通常显示为深灰色

B

深红色

C

深绿色

D

粗体棕色,通常显示为黄色

E

深蓝色

F

洋红色

G

靛青色

H

大胆的浅灰色;看起来像亮白色

x

默认前景或背景

请注意,以上是标准的 ANSI 颜色。 实际显示可能会因所使用终端的颜色功能而异。

属性的顺序如下:

  1. 目录

  2. 符号链接

  3. 嵌套字

  4. 管道

  5. 可执行

  6. 块特别

  7. 特殊字符

  8. 设置了 setuid 位的可执行文件

  9. 设置了 setgid 位的可执行文件

  10. 其他人可写的目录,带有粘性位

  11. 其他人可写的目录,没有粘性位

默认为 “exfxcxdxbxegedabagacad”, 即常规目录为蓝色前景和默认背景,setuid 可执行文件为黑色前景和红色背景等。

LS_COLWIDTHS

如果设置了此变量,则将其视为以冒号分隔的最小列宽列表。 不合理和不足的宽度将被忽略(因此零表示动态大小的列)。 并非所有列都有可变宽度。 这些字段依次为:inode、块计数、链接数、用户名、组名、标志、文件大小、文件名。

LS_SAMESORT

如果设置了此变量,则 -t 选项对具有相同修改时间戳的文件名进行排序,其意义与时间排序相同。 有关详细信息,请参阅 -t 选项的说明。

TERM

CLICOLORCOLORTERM 功能取决于具有颜色功能的终端类型。

TZ

显示日期时使用的时区。 有关详细信息,请参阅 environ(7) 。

The ls utility exits 0 on success, and >0 if an error occurs.

以长格式列出当前工作目录的内容:

$ ls -l

除了以长格式列出当前工作目录的内容外,还显示 inode 编号、文件标志(请参阅 chflags(1) ),并在每个文件名后缀一个代表其文件类型的符号:

$ ls -lioF

列出 /var/log 中的文件,对输出进行排序,以便首先打印最近修改的条目:

$ ls -lt /var/log

为了与 IEEE Std 1003.2 (“POSIX.2”) 规范兼容,组字段现在自动包含在文件的长列表中。

chflags(1) 、 chmod(1) 、 getfacl(1) 、 sort(1) 、 xterm(1) 、 localeconv(3) 、 strftime(3) 、 strmode(3) 、 termcap(5) 、 maclabel(7) 、 sticky(7) 、 symlink(7) 、 getfmac(8)

除了选项 -g -、 -n-o 之外, ls 实用程序符合 IEEE Std 1003.1-2001 (“POSIX.1”) 和 IEEE Std 1003.1-2008 (“POSIX.1”) 。 选项 -B -、 -D -、 -G -、 -I -、 -T -、 -U -、 -W -、 -Z -、 -b -、 -h -、 -w -、 -y- 是非标准扩展。

ACL 支持与 IEEE Std 1003.2c (“POSIX.2c”) 草案 17 (撤回)兼容。

ls 命令出现在 Version 1 AT&T UNIX 。

为了保持向后兼容性,许多选项之间的关系非常复杂。

-s 选项描述中提到的异常可能是基于单列输出通常会发送到终端以外的其他东西这一事实的功能。 这是否是设计错误值得商榷。

IEEE Std 1003.2 (“POSIX.2”) 在使用 -t 选项进行排序时要求对具有相同时间戳的文件进行相反的排序顺序。

August 31, 2020

FreeBSD 13.1-RELEASE

最后更新于

FreeBSD 中文社区