Linux ls 命令:列出内容

LinuxBeginner
立即练习

介绍

欢迎来到精彩的 Linux 文件管理世界!在本教程中,我们将开启一段掌握 ls 命令的旅程——它是你探索文件系统时最值得信赖的伙伴。无论你是一名初出茅庐的系统管理员,还是一个充满好奇心的新手,理解 ls 对于你的 Linux 冒险之旅都至关重要。

想象你是一名正在调查神秘文件夹的侦探。ls 命令就是你的放大镜,它能揭示隐藏的线索并发现文件系统的秘密。让我们开始调查吧!

这是一个引导实验,提供分步说明以帮助你学习和练习。请仔细遵循说明完成每个步骤并获得动手经验。历史数据表明,这是一个中级难度的实验,完成率为 73%。它获得了学习者 99% 的好评率。

进入文件系统

打开终端,开始我们的调查!

点击桌面上的 Xfce Terminal 图标来打开一个新的终端窗口。

桌面上的 Xfce Terminal 图标

现在,让我们使用基础的 ls 命令进行第一次环顾。

输入:

ls

输出:

data_file.txt test test_file.txt
ls 命令输出示例

接下来的步骤将不再包含命令行提示符和输出结果的截图。请在终端中输入命令以查看输出。

恭喜!你刚刚列出了目录的内容。这些就是我们神秘房间里显而易见的「线索」。让我们来理解一下看到的内容:

  • data_file.txttest_file.txt 是文件。在 Linux 中,文件扩展名(如 .txt)通常用于指示文件类型,但它们并不是强制性的。
  • test 很可能是一个目录(文件夹)。注意它没有文件扩展名。

如果你看到的文件夹名称不同,请不要担心——你目录中的内容可能会有所不同。重要的是你现在可以看到当前目录下的内容了!

揭开隐藏的秘密

既然我们已经看到了明显的线索,现在来寻找隐藏的线索。在 Linux 世界中,隐藏文件和目录以点(.)开头。这些通常是配置文件或目录,不希望干扰你的常规视图。

输入:

ls -a

输出:

. .. data_file.txt test test_file.txt

-a 选项会显示所有文件,包括隐藏文件。让我们分析一下看到的内容:

  • . 代表当前目录。它是你可以在命令中使用的快捷方式。
  • .. 代表父目录(上一级目录)。这在导航时非常有用。
  • 我们之前看到的其他文件依然在列表中。

你可能会纳闷:「为什么我没看到任何实际的隐藏文件?」在这种情况下,我们的目录除了 ... 之外不包含任何隐藏文件。在许多目录中,尤其是你的家目录(home folder),你经常会看到像 .bashrc.config 这样的文件。

如果你有 Windows 背景,这可能看起来很奇怪。在 Windows 中,隐藏文件是一种属性,而在 Linux 中,它是由文件名决定的。任何以点开头的文件都被视为隐藏文件。

收集详细信息

一名优秀的侦探需要详细的信息。让我们使用 -l 选项来获取长列表格式。这将为我们提供关于每个文件和目录的更多信息。

输入:

ls -l

输出:

total 8
-rw-rw-r-- 1 labex labex 12 Aug  7 11:23 data_file.txt
drwxrwxr-x 2 labex labex  6 Aug  7 11:23 test
-rw-rw-r-- 1 labex labex 27 Aug  7 11:23 test_file.txt

哇,信息量真大!让我们逐一拆解:

  1. 文件权限:第一列(例如 -rw-rw-r--)显示文件权限。

    • 第一个字符指示文件类型(- 表示普通文件,d 表示目录)。
    • 接下来的三个字符显示所有者权限。
    • 再接下来的三个显示组权限。
    • 最后三个显示其他人的权限。
    • r 代表读取,w 代表写入,x 代表执行。
  2. 链接数:紧跟在权限后面的数字(在本例中,文件为 1,目录为 2)。

  3. 所有者名称:文件所有者的用户名(此处为 labex)。

  4. 组名:拥有该文件访问权限的组(此处也是 labex)。

  5. 文件大小:以字节为单位的大小(data_file.txt 为 12,test 目录为 6,test_file.txt 为 27)。

  6. 最后修改日期和时间:文件最后一次更改的时间(此处所有文件均为 Aug 7 11:23)。

  7. 文件或目录名称:文件或目录的名字。

注意到 test 的权限开头有一个 d 吗?这意味着它是一个目录!此外,它的大小是 6 字节,这在某些文件系统中是空目录或近乎空目录的典型大小。

这种详细视图让我们对文件和目录的情况一目了然。它对于了解谁可以访问文件、文件何时被修改以及文件有多大非常有用。

使文件大小易于阅读

那些以字节为单位的文件大小可能很难理解,尤其是对于大文件。让我们使用 -h 选项配合 -l,使它们变得对人类更友好。

输入:

ls -lh

👆 LabEx 提示: 点击代码块右下角的「Explain Code」,即可与 Labby AI 交流以获取代码解释。

输出:

total 8.0K
-rw-rw-r-- 1 labex labex 12 Aug  7 11:23 data_file.txt
drwxrwxr-x 2 labex labex  6 Aug  7 11:23 test
-rw-rw-r-- 1 labex labex 27 Aug  7 11:23 test_file.txt

现在我们可以看到总大小是 8.0K,这比看字节单位要容易理解得多!

-h 选项代表「易读的」(human-readable)。它将文件大小转换为人类更容易理解的格式。其工作原理如下:

  • 小于 1 KB 的文件以字节显示(正如我们在这里看到的文件)。
  • 1 KB 到 1 MB 之间的文件以 KB (K) 显示。
  • 1 MB 到 1 GB 之间的文件以 MB (M) 显示。
  • 大于 1 GB 的文件以 GB (G) 显示。

这在处理大文件或当你试图快速了解文件占用多少空间时特别有用。

你可能会注意到,即使我们添加了 -h 选项,我们仍然包含了 -l 选项。这是因为 -h 是用来修改长列表格式输出的。如果我们只使用 ls -h,我们将根本看不到文件大小!

组合我们的侦探工具

现在我们已经学习了几个选项,让我们把它们组合起来,以获取神秘房间的完整图像,包括隐藏的线索和易读格式的详细信息。

输入:

ls -alh

输出:

total 12K
drwxr-xr-x 1 labex labex   60 Aug  7 11:23 .
drwxr-x--- 1 labex labex 4.0K Aug  7 11:24 ..
-rw-rw-r-- 1 labex labex   12 Aug  7 11:23 data_file.txt
drwxrwxr-x 2 labex labex    6 Aug  7 11:23 test
-rw-rw-r-- 1 labex labex   27 Aug  7 11:23 test_file.txt

这个命令结合了我们学到的所有内容:

  • -a 显示所有文件,包括隐藏文件
  • -l 提供带有详细信息的长列表格式
  • -h 使文件大小易于阅读

让我们分析一下看到的内容:

  1. 目录的总磁盘占用量(12K)。
  2. 当前目录(.)及其父目录(..),我们之前在 ls -a 中见过。
  3. 我们的文件和目录,带有我们在 ls -l 中看到的所有详细信息。
  4. 得益于 -h 选项,文件大小以易读格式显示。

你可能会奇怪,为什么把可见文件加起来的大小不到 12K,却显示总计 12K。这是因为总计包含了目录项本身的大小,它们也会占用磁盘空间。

另外,请注意选项的顺序并不重要。ls -alhls -halls -lha 都会产生相同的输出。大多数 Linux 命令都是如此,这使得它们非常灵活!

排序我们的线索

有时,线索的顺序很重要。让我们探索如何以不同的方式对文件进行排序。

首先,让我们按修改时间对文件进行排序,最新的排在前面:

输入:

ls -lt

此命令以长格式(-l)列出文件,按修改时间(-t)排序,最近修改的文件排在最前面。

如果你没看到顺序有什么变化,那是因为这个目录下的所有文件很可能是在同一时间创建或修改的。在实际场景中,如果文件在不同时间修改,你会看到最近更改的文件出现在顶部。

现在,让我们反转顺序,先看最旧的文件:

输入:

ls -ltr

r 选项会反转排序顺序。同样,如果所有文件具有相同的修改时间,你将看不到区别。

以下是一些其他有用的排序选项:

  • -S:按文件大小排序,最大的排在前面
  • -X:按文件扩展名的字母顺序排序
  • -v:按版本排序(对带数字的文件很有用)

你可以将这些选项与我们之前的选项结合使用。例如,ls -lhSr 将为你提供一个带有易读大小的长列表,并按大小排序,最小的文件排在前面。

记住,在 Linux 中,你经常可以组合选项来创建强大且自定义的命令!

窥视目录内部

到目前为止,我们一直在查看当前目录的内容。但如果我们想在不实际进入子目录的情况下调查其内容呢?我们可以使用 ls 命令并将目录名作为参数。

输入:

ls -l test

此命令将列出 test 目录的内容,而我们仍留在当前位置。如果 test 目录是空的,你会看到如下消息:

total 0

这意味着目录存在但不包含任何文件。

如果 test 目录中有文件,你会看到它们像我们当前目录中那样被列出。

这种「窥视」目录的能力在你探索文件系统或寻找特定文件时非常有用。你甚至可以使用通配符同时查看多个目录。例如:

ls -l */

这将显示当前位置下所有直接子目录的内容。

请记住,如果你没有读取目录的权限,ls 会提示你访问被拒绝。这是 Linux 强大的安全模型的一部分,确保用户只能访问他们被允许访问的文件和目录。

一个有趣的小技巧——会说话的牛与理解颜色选项

既然你已经掌握了 ls 的基础知识,让我们来点有趣的并进一步探索!Linux 不仅仅是严肃的工作——它也可以很俏皮。我们将使用一个名为 cowsay 的有趣程序以一种幽默的方式显示我们的目录内容,然后我们将学习 ls 中的颜色选项。

首先,让我们尝试一下 cowsay 小技巧:

输入:

ls | cowsay

你应该会看到类似这样的内容:

 _________________________________________
/ data_file.txt test test_file.txt        \
\                                         /
 -----------------------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

是不是很有趣?我们刚刚让一头牛说出了我们目录的内容!

你可能会对 lscowsay 之间的 | 符号感到好奇。这被称为「管道」(pipe),它是 Linux 中一个强大的功能,可以将命令连接在一起。如果你现在不理解它的工作原理,请不要担心——这完全正常!我们将在以后的课程中学习更多关于管道的知识。现在,尽情享受这只会说话的牛吧!

现在,让我们再多探索一下 ls。你知道 ls 可以用不同的颜色显示输出吗?默认情况下,许多 Linux 系统都设置为自动显示颜色。但我们可以控制这种行为。让我们尝试使用一个特殊选项来关闭颜色的 ls

输入:

ls --color=never

你现在应该能看到没有任何颜色的目录内容。这就是 ls 的纯文本、无颜色输出。

ls 中的 --color 选项可以接受三个值:

  • never:从不使用颜色(我们刚刚尝试过的)
  • always:始终使用颜色,即使是将输出发送到文件或其他命令时也是如此
  • auto:直接输出到终端时使用颜色,但发送到其他地方时不使用

在脚本中或者当你想要确保无论终端设置如何都能获得一致的输出时,使用 ls --color=never 会非常有用。

这些小探索向你展示了 Linux 命令通常有许多可以改变其行为的选项。随着你继续 Linux 之旅,你会发现 ls 和其他命令更多有用的功能!

总结

恭喜你,侦探!你已经掌握了 ls 命令的基础知识。让我们回顾一下所学的内容:

  1. 基础用法:ls —— 列出当前目录下的文件和目录。
  2. 显示隐藏文件:ls -a —— 显示所有文件,包括隐藏文件。
  3. 详细列表:ls -l —— 显示关于文件和目录的详细信息。
  4. 易读的文件大小:ls -h —— 以人类易于理解的格式显示文件大小。
  5. 组合选项:ls -alh —— 显示所有文件,并带有详细信息和易读的大小。
  6. 排序文件:ls -ltls -ltr —— 按修改时间排序,最新或最旧的排在前面。
  7. 列出其他目录的内容:ls [目录] —— 在不改变当前位置的情况下窥视其他目录。

还有许多其他的 ls 选项值得探索。以下是一些你可能会觉得有用的选项:

  • -R:递归列出子目录(显示所有子目录的内容)
  • -S:按文件大小排序(最大的排在前面)
  • -X:按条目扩展名的字母顺序排序
  • -1:每行只列出一个文件(对脚本很有用)

记住,你随时可以在终端输入 man ls 来查看 ls 的手册页,以获取完整的选项列表和详细说明。不要被手册页吓到——一旦你习惯了阅读它们,它们就是信息的宝库!

有了这些工具,你就已经准备好在任何 Linux 系统中探索和管理文件了。ls 命令只是你 Linux 之旅的开始,但它是你随着对操作系统越来越精通而每天都会用到的基本工具。

在你继续探索 Linux 的过程中,请记住以下关键点:

  1. Linux 命令起初往往简短且晦涩,但一旦你学会了,它们就会变得非常强大且高效。
  2. 大多数命令都有许多选项,你可以以各种方式组合它们。不要害怕尝试!
  3. 终端起初可能看起来令人生畏,但它是一个极其强大的工具,能让你精确控制系统。
  4. Linux 是区分大小写的。File.txtfile.txtFILE.txt 在 Linux 中都是不同的文件。
  5. 你在 ls 中学到的概念(如选项和参数)也适用于许多其他 Linux 命令。

熟能生巧!尝试在不同的目录中使用 ls 的各种选项组合。你用得越多,它就会变得越自然。

记住,每一位专家都曾是初学者。只要有耐心和练习,你很快就能像专业人士一样在 Linux 文件系统中穿梭!

祝你探索愉快,每当你需要温习 ls 命令时,请随时参考本指南。你的 Linux 世界之旅才刚刚开始!