Linux ls 命令:列出文件和目录

Linux 中的 ls 命令显示目录中的文件和子目录列表。使用 ls -la,可以查看详细信息,包括隐藏项、权限、所有者、大小和修改时间。

列出当前目录或指定路径

在终端中运行以下命令可以显示当前工作目录中的项目。可以使用 pwd 检查当前位置。

pwd
ls

要查看其他目录的内容,请指定路径。可以使用绝对路径或基于当前位置的相对路径。

ls /var

默认情况下,名称以点开头的隐藏项目会从列表中排除。名称和显示顺序取决于系统和区域设置。ls 是读取列表的命令,不会删除或修改文件。

查看隐藏项目和详细信息

-a 包括以点开头的名称,而 -l 以详细格式显示。您可以同时使用这两个选项。

ls -a
ls -l
ls -la

ls -a 也显示当前目录的 . 和上级目录的 ..。GNU ls -A 显示隐藏项目,但省略这两个条目。要以易于读取的单位显示大小,请在详细列表中添加 -h。

ls -lah

例如,它可以显示为 1K、2M。输出会根据目标文件和系统设置而有所不同。

读取详细列表

下面是显示普通文件的示例。日期格式、名称和数字会根据实际环境有所不同。

-rw-r--r-- 1 user group 12 Jan 15 10:30 notes.txt
  • -rw-r--r--: 第一个字符 - 是普通文件,其余字符表示所有者、组和其他用户的权限。如果以 d 开头,则表示目录;如果以 l 开头,则表示符号链接。
  • 1 user group: 硬链接数量、所有者和所属组。
  • 12: 在基本详细列表中的文件大小(字节)。使用 -h 会将其更改为易读单位。
  • Jan 15 10:30 notes.txt: 默认显示最后修改时间和名称。输出格式取决于区域设置和选项。

目录的大小条目并不是其内部文件大小的总和。要检查整个目录的磁盘使用情况,可以使用像 du 这样的工具。链接目标通常在详细列表中以 name -> target 形式显示。

检查排序和目录本身

-t 默认按最新修改时间排序。与 -r 一起使用将会反转顺序。

ls -lt
ls -ltr

要检查目录本身的权限和所有者,而不是内部列表,请使用 -d。

ls -ld /var

-R 还会递归列出子目录,因此对于大的目录树,输出可能会很大。查看 GNU ls 手册 或 man ls 了解选项的详细含义。

使用名称模式缩小列表

在 Bash 中,星号 * 是一种名称模式,可匹配零个或多个字符。以下命令查找名称以 .conf 结尾的 /etc 中的项目。

ls -d /etc/*.conf

Shell 首先展开匹配模式的名称,然后将它们传递给 ls。由于输入了 -d,即使匹配的项目是目录,它也会显示目录名称本身。在典型的 Bash 设置中,以点开头的隐藏项目不会自动匹配。如果没有匹配的名称,结果可能因 shell 选项而异,例如出现错误或按原样传递模式。

如果路径包含空格,请像 ls "my folder" 那样使用引号引用路径。通常,如果将模式也放在引号内,shell 通常不会展开星号。有关详细信息,请参阅 Bash 文件名展开文档。

检查磁盘设备和错误

ls -l /dev/sd* 可以显示与以 sd 开头的设备文件匹配的列表。然而,并不是所有的磁盘和分区都使用该名称。其他设备,如 NVMe,可能会从列表中缺失,因此在检查块设备及其层次结构时使用 lsblk 更为合适。

lsblk

如果列表未显示或显示 Permission denied,请检查路径是否存在以及访问权限。如果输出与预期不同,请使用 type ls 检查 Shell 别名,并同时查看发行版和 ls --help 的选项说明。