Linux ls 命令:内容列表

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

欢迎来到激动人心的 Linux 文件管理世界!在本教程中,我们将踏上掌握 ls 命令的旅程——这是你在文件系统中导航的得力助手。无论你是初出茅庐的系统管理员,还是充满好奇的新手,理解 ls 命令对于你的 Linux 冒险至关重要。

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("`Linux`")) -.-> linux/BasicFileOperationsGroup(["`Basic File Operations`"]) linux(("`Linux`")) -.-> linux/TextProcessingGroup(["`Text Processing`"]) linux(("`Linux`")) -.-> linux/InputandOutputRedirectionGroup(["`Input and Output Redirection`"]) linux/BasicFileOperationsGroup -.-> linux/ls("`Content Listing`") linux/TextProcessingGroup -.-> linux/sort("`Text Sorting`") linux/InputandOutputRedirectionGroup -.-> linux/pipeline("`Data Piping`") subgraph Lab Skills linux/ls -.-> lab-219205{{"`Linux ls 命令:内容列表`"}} linux/sort -.-> lab-219205{{"`Linux ls 命令:内容列表`"}} linux/pipeline -.-> lab-219205{{"`Linux ls 命令:内容列表`"}} end

进入文件系统

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

点击桌面上的 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 小贴士: 点击代码块右下角的“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,而将所有可见文件的大小相加却不到这个值。这是因为总大小包括了目录条目本身所占用的磁盘空间。

另外,注意选项的顺序并不重要。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 --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 世界之旅才刚刚开始!

您可能感兴趣的其他 Linux 教程