Linux ls 命令:列出内容

LinuxBeginner
立即练习

简介

欢迎来到精彩的 Linux 文件管理世界!在本教程中,我们将踏上掌握 ls 命令的旅程——它是你浏览文件系统时最可靠的伙伴。无论你是初出茅庐的系统管理员还是充满好奇的新手,理解 ls 对于你的 Linux 探索之旅都至关重要。

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

进入文件系统

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

点击桌面上的 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 选项显示所有文件,包括隐藏文件。让我们分析一下所看到的内容:

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

你可能会问:“为什么我没有看到任何实际的隐藏文件?”在这种情况下,我们的目录中除了 ... 之外没有其他隐藏文件。在许多目录中,特别是在你的主文件夹中,你经常会看到像 .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 小贴士: 点击代码块右下角的“解释代码”与 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,而我们看到的却不止这些。这是因为总数包含了目录条目本身的大小,它们在磁盘上占用了空间。

另外,请注意选项的顺序并不重要。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 [directory] - 在不改变当前位置的情况下窥探其他目录。

还有许多 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 世界之旅才刚刚开始!