ls 命令

用途

显示目录的内容。

语法

要显示目录的内容或文件的名称,请输入:

ls [ -1 ] [ -A ] [ -C ] [ -E ] [ -F ] [-H | -L ] [ -N ] [ -R ] [ -S ] [ -X] [ -a ] [ -b ] [ -c ] [ -d ] [ -e ] [ -f ] [ -g ] [ -i ] [-k] [ -l ] [ -m ] [ -n ] [ -o ] [ -p ] [ -q ] [ -r ] [ -s ] [ -t ] [ -u ] [ -U ] [ -x ] [ File ...]

要显示目录的内容,请输入:

ls -f [ -C ] [ -d ] [ -i ] [ -m ] [ -s ] [ -X ] [ -x ] [ -1 ] [ -U ][ 目录... ]

描述

ls 命令将 每个由 Directory 参数指定的目录 或者每个由 File 参数指定的名称写入标准输出,以及您所要求的和标志一起的其他信息。 如果不指定 FileDirectory 参数,ls 命令显示当前目录的内容。

在互斥对中指定多个选项不看成错误。 每对中最后一个指定的选项确定输出格式。

缺省情况下,ls 命令按照文件名的字母顺序显示所有信息。 整理顺序由环境变量 LANGLC_COLLATE 环境变量确定。

ls 命令显示目录的内容时,它不会显示其名称以 开头的文件的条目。 (点) ,除非使用 -a-A 标志。 如果命令由 root 用户执行,它缺省使用 -A 标志。

格式化输出有三种主要方式:

  • 每行列示一项。
  • 通过指定 -C-x 标志来列示多列中的条目。 当向 TTY 输出时,-C 标志是缺省格式。 如果文件或目录名太长,ls 命令显示单列输出。
  • 通过指定 -m 标志以用逗号分隔的序列列出条目。

要确定输出行中字符位置的数目,ls 命令使用环境变量 COLUMNS。 如果没有设置此变量,命令获取显示的当前列值。 如果使用这些方法,ls 命令 还不能确定字符位置的数量,它就使用缺省值 80。

使用 -U 标记显示的模式与 -l 标志显示的模式相同,只是增加了第 11 个字符,解释如下:
描述
E 表示文件有扩展属性(EA)信息。 使用 getea 命令显示文件的 EA。
- 表示文件没有扩展属性信息。
e 表明文件已加密。

加密优先于访问控制表 (ACL) 和其他 EA。

使用 -e-l 标志显示的方式解释如下:

如果第一个字符是:

描述
此项为目录。
此项为块特殊文件。
c 此项为字符特殊文件。
L 该条目是符号链接,并且指定了 -N 标志或符号链接未指向现有文件。
p 此项为一个先进先出(FIFO)特殊文件。
此项为本地套接字。
- 此项为普通文件。

接下来的 9 个字符被分成 3 个集合,每个集合 3 个字符。 第一组 3 字符集合显示所有者许可权。 下一组 3 字符集合显示了组中其他用户的许可权。 最后 3 字符集合显示了访问此文件的其他任何人的许可权。 每个集合中的三个字符各自表示了文件的读、写和执行权限。 目录的执行权限让您可以搜索目录中的指定文件。

许可权表示如下:

描述
R 读取
w 写(编辑)
X 执行(搜索)
- 没有授予相应的许可权

如果文件有 set-group-ID 方式,那么组执行许可权字符是 s。 如果文件有 set-user-ID 方式,那么用户执行许可权字符是 s。 如果设置了方式的 01000 (八进制) 位,那么方式的最后一个字符 (通常为 X -) 为 (请参阅 奇莫德 命令以了解此方式的含义)。 如果没有设置相应的执行许可权,set-ID 的指示和方式位 01000 以大写字母开头(分别为 ST)。 方式 t 表示粘滞位是为文件或目录而设置的。

当使用 -e 标志时,其显示方式与使用 -l 标志一样,除了多出了第 11 个字符,其解释如下:

描述
+ 表示文件有扩展安全性信息。 例如,文件可能在方式中有扩展的 ACLTCB 或者 TP 属性。

使用 aclget 命令显示文件的访问控制信息 (ACL)。 TCBTP 属性的值通过使用 chtcb 命令显示。

- 表示文件没有扩展安全性信息。

当列示目录中文件大小时,ls 命令显示块总数,包括间接块。

标志

描述
-A 列示所有条目,除了 . (点) 和 .. (点点)的当前目录的绝对路径名,那么显示 PWD 环境变量的值。
-a 列出目录中的所有条目,包括以 开头的条目。 (点)。
-b 以八进制(\nnn)表示法显示非打印字符。
-c 将最近一次修改索引节点的时间用于排序 (与 -t 标志一起使用时) 或显示 (与 -l 标志一起使用时)。 如果此标志未与 -t 和/或 -l 标志一起使用,那么此标志无效。
-C 以多列纵向排序输出。 当往终端输出时,此为缺省方法。
-d 仅仅显示指定目录信息。 目录被视为文件,这在使用 -l 标志获取目录状态时很有用。
-e 显示方式(包括安全信息)、链接数目、所有者、组、大小(按字节)、最近修改时间和每个文件名称。 如果文件是特殊文件,大小字段包含主要和次要设备数目。 如果文件是符号链接,那么将在链接到文件的路径名前面打印一个-> (减号,大于号) 符号。 显示符号链接的属性。
-E 列示位于 Vxfs 文件系统的某个文件的范围属性,如保留空间、固定范围大小和范围分配标志信息。 必须将 -l 标志与此标志一起指定;否则,ls 命令会忽略 -E 标志并完成执行。
-f 在每个存储槽中列示 Directory 参数指定的每个目录的名称。 此标志关闭 -l-t-s-r 标志,并打开 -a 标志。 列表的顺序就是项出现在目录中的顺序。
-f 如果文件是目录,在文件名后面放置一个 /(斜杠),如果文件可执行,那么放置一个 *(星号),如果文件为套接字,那么放置一个 =(等号),如果为 FIFO,那么放置一个 |(管道)符号,如果是符号链接,那么放置一个 @。 除非指定了 -H-L 标志,否则不允许使用命名为操作数的符号链接。
-g 显示与 -l 标志相同的信息,但 -g 标志禁止显示所有者和符号链接信息。
-h 如果在命令行上指定了引用类型目录文件的符号链接,ls 命令将文件信息和文件类型估计为由链接引用的文件的信息和类型,而非链接本身;然而,ls 命令将写链接本身的名称,而非由链接引用的文件。
-i 显示每个文件报告第一列中的索引节点号。 如果文件系统具有内部快照,那么 .snapshot 目录及其所有内容都没有唯一索引节点号。
-k -s 选项的块大小以及为 -l-n-g-o 选项写入的每个目录的块计数设置为 1024 个字节。
-L 列示链接引用的文件或目录内容。 这是缺省操作。 后跟符号链接。 如果使用 -l 选项,-N 选项就成为缺省值,不后跟符号链接。 当使用 -l 选项时,仅有 -L 选项能够覆盖 -N 缺省值。
-l (L 的小写)显示方式、链接数目、所有者、组、大小(按字节)和每个文件最近一次修改时间。 如果文件是特殊文件,大小字段包含主要和次要设备数目。 如果最近一次修改时间大于六个月之前,时间字段以 月份 日期 年份 的格式显示,然而六个月内修改的文件以 月份 日期 时间 的格式显示。

如果文件是符号链接,那么将在链接到文件的路径名前面打印一个->。 将显示符号链接的属性。 -n-g-o 标志覆盖 -l 标志。

注意:
  1. 符号链接文件后跟一个箭头,然后是符号链接的内容。
  2. -l 选项一起使用时,可以通过执行 mkpasswd 命令来提高 ls 命令的性能。 当目录包含不同用户拥有的文件时,这非常有用,例如 /tmp 目录。
-M 使用流输出格式(逗号分隔系列)。
-n 显示与 -l 标志相同的信息,只不过 -n 标志显示用户和组标识而不是用户和组名。
-N 当确定文件状态时,不跟在符号链接之后。

注:如果使用 -L-N 两个标志,最后一个标志起作用。 同样的,任何时候给定 一个包含以 /(斜杠)作为最后字符的符号链接,不管使用何种选项,后面都会跟有链接。

-O 显示与 -l 标志相同的信息,除了 -o 标志禁止显示组和符号链接信息。
-p 如果文件是目录,在每个文件名后面放置一个斜杠。 当您将 ls 命令的输出通过管道传输到 pr 命令时,这很有用,如下所示:
ls  -p |  pr  -5  -t  -w80
-q 将文件名中不可打印的字符显示为?(问号)。
-r 反转排序顺序,适当的按字母逆向排序或者首先排序最旧的文件。
-R 递归列示所有子目录。
-s 按照千字节(包括间接块)给出每一项的大小。
-S 以文件大小作为主键(按降序)、整理顺序中的文件名作为辅键(按升序)进行排序。
-t 按照最近一次修改时间(最近的最先)而不是名称排序。 对于符号链接,用作排序键的时间是符号链接本身的时间。
-U 显示与 -l 标志相似的信息。 显示方式(包括安全信息、指定的扩展属性信息和加密信息)、链接数目、所有者、组、大小(以字节为单位)、上次修改的时间和每个文件的名称。 如果文件是特殊文件,大小字段包含主要和次要设备数目。 如果文件是符号链接,那么将在链接到文件的路径名前面打印一个 -> (减号,大于号) 符号。 显示符号链接的属性。
-U 将上次访问的时间 (而不是上次修改的时间) 用于排序 (与 -t 标志一起使用时) 或显示 (与 -l 标志一起使用时)。 如果此标志未与 -t 和/或 -l 标志一起使用,那么此标志无效。
-x 以多列格式横向排序输出。
-X 当与用于显示用户名的其他标志配合使用时,将打印长用户名。 上限由 PdAt 和 CuAt 对象类中的 max_logname ODM 属性确定。 如果用户名大于 max_logname 属性,它会被截断到 max_logname 属性指定的字符数,再减掉一个字符。
-1 强制输出为每行一项格式。 当输出没有定向到终端时,这是缺省情况。
注意:
  • 如果指定了任何 -l-n-s-g-o 标志, 在目录中存在的每个文件前面都有一个状态行,该状态行指示文件占用的文件系统块数。
  • 如果未随任何 -l-n-s-g一起指定 -k 标志, 或 -o 标志,状态行指示文件占用的文件系统块数 (以 512 字节为单位)。
  • 如果 -k 标志与任何 -l-n-s-g一起指定, 或 -o 标志,状态行指示文件占用的文件系统块数 (以 1024 字节为单位)。
  • 此外,如果需要,目录中文件占用的文件系统块数将舍入为下一个整数单位数。
  • 在 POSIX 语言环境中,总计 %u\n 是表示目录中单元数的输出格式。

退出状态

本命令返回以下退出值:

描述
重大安全事件数量 写所有文件成功。
> 0 发生错误。

安全性

RBAC 用户注意: 此命令可以执行特权操作。 只有特权用户才能执行特权限定的操作。 有关授权和权限的更多信息,请参阅安全中的特权命令数据库。 有关该命令的权限和授权列表,请参阅 "lssecattr命令或 "getcmdattr子命令。

示例

  1. 要列出当前目录中的所有文件,请输入:
    ls -a
    这将列出所有文件,包括 (点) , .. (dot-dot) ,以及名称以点开头的其他文件。
  2. 要显示详细信息,请输入:
    ls   -l chap1  .profile
    这将显示一个长列表,其中包含有关chap1.profile.
  3. 要显示有关目录的详细信息,请输入:
    ls   -d   -l  .  manual  manual/chap1
    这将显示目录的长列表.manual,并且对于文件manual/chap1。如果没有 -d 标志,这将列出.manual而不是有关目录本身的详细信息。
  4. 要按修改时间顺序列出文件,请输入:
    ls   -l -t
    显示最近被修改文件的长列表,较旧的文件跟在后面。
  5. 想要用扩展的用户名和组名显示详细信息,请输入:
    ls  -lX .profile
    显示一个长列表,包括关于 .profile 的详细信息。
  6. 要显示有关是否为当前目录中的文件设置了扩展属性的数据,请输入:
    ls -U
    • 适用于AIX 5.3及更早版本:

      示例输出:

        -rwSr-x---+   1 root     system           28 Apr 29 03:23 only_aixc
        -rwSr-x---E   1 root     system            4 Apr 29 03:23 only_aixc_ea
        -rw-r--r--E   1 root     system            4 Apr 29 03:23 only_ea
        ----------+   1 root     system          265 Apr 29 03:23 only_nfs4
        ----------E   1 root     system           64 Apr 29 03:23 only_nfs4_ea
        -rw-r--r---   1 root     system            4 Apr 29 03:23 only_regular
    • 对于发行版 AIX 6.1 和更高版本:

      示例输出:

        -rwSr-x---+    1 root     system           28 Apr 29 03:23 only_aixc
        -rwSr-x---E    1 root     system            4 Apr 29 03:23 only_aixc_ea
        -rw-r--r--E    1 root     system            4 Apr 29 03:23 only_ea
        ----------+    1 root     system          265 Apr 29 03:23 only_nfs4
        ----------E    1 root     system           64 Apr 29 03:23 only_nfs4_ea
        -rw-r--r---    1 root     system            4 Apr 29 03:23 only_regular
        -rwxrwxr-xe    2 root     system          256 May 25 16:27 encry_ex 
  7. 要显示有关当前目录中文件的文件系统块数 (以 512 字节为单位) 的信息,请输入:
    ls -l
    示例输出:
    total 16
    -rw-r--r--    1 root     system           22 Feb 05 05:29 sample1
    -rw-r--r--    1 root     system           12 Feb 05 05:29 sample2
  8. 要显示有关当前目录中文件的文件系统块数 (以 1024 字节为单位) 的信息,请输入:
     ls -lk
    示例输出:
    total 8
    -rw-r--r--    1 root     system           22 Feb 05 05:29 sample1
    -rw-r--r--    1 root     system           12 Feb 05 05:29 sample2

文件

描述
/usr/bin/ls 包含 ls 命令。
/etc/passwd 包含用户标识。
/etc/group 包含组标识。
/usr/share/lib/terminfo/* 包含终端信息。