0Pricing
Linux Command Line & Bash Scripting Mastery · 课时

Shell 展开与通配

了解 Shell 如何展开命令,包括大括号展开、波浪号展开和文件名通配模式。

Shell 展开与通配 是 CoddyKit 上的免费 Linux Command Line & Bash Scripting Mastery 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Linux Command Line & Bash Scripting Mastery 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Linux Command Line & Bash Scripting Mastery 课程共包含 4 节课。

什么是 Shell 展开?

在 Linux 中,Shell就像您与操作系统之间的翻译器。在运行命令之前,Shell 通常会执行一些被称为展开的“魔法”。

Shell 展开是指 Shell 查找命令中的特殊字符或模式,并将其替换为其他内容。这发生在命令实际执行之前,既能减少输入,又能让命令更加强大!

使用波浪号 `~` 表示您的主目录

波浪号(~)展开是一个非常实用的快捷方式。它会自动展开为当前用户的主目录。

您无需输入 /home/yourusername,只需使用 ~ 即可。这对于在主目录中导航或引用文件尤其有用。

echo ~
echo ~/Documents

使用波浪号表示其他用户

波浪号不只适用于您自己的主目录!您还可以使用它来指代其他用户的主目录。

输入 ~username 后,Shell 会将其展开为指定“username”的主目录。这对于访问共享文件或配置非常方便。

  • ~root 会展开为 /root
  • ~guest 会展开为 /home/guest

花括号展开 `{}`

花括号展开可以生成任意字符串。它就像一种快捷方式,让您可以根据单个模式创建多个项目,而不必逐一输入。

Shell 会将花括号 {} 中的内容展开为一个由多个独立单词组成的列表。这对于创建名称相似的文件或目录,或对多个项目运行命令,非常有用。

echo {apple,banana,cherry}

花括号范围

您还可以使用花括号展开来生成数字或字母序列。具体做法是在花括号中使用 .. 分隔两个项目。

Shell 会生成序列中的所有项目,从而便于创建带编号的文件或目录,或遍历一组值。

echo file_{1..3}.txt
echo {a..c}_report.log

通配展开简介

通配展开是 Shell 使用特殊通配符匹配文件名和路径名的方式。它就像使用“搜索模式”来查找文件。

当您输入类似 ls *.txt 的命令时,Shell 不会将 *.txt 直接传给 ls。相反,它会先将 *.txt 展开为当前目录中所有匹配文件的列表,然后将该列表传给 ls。

使用 `*` 匹配全部

星号(*)是最常见的通配符。它可以匹配文件名中的零个或多个字符。

您可以使用它匹配任意字符序列,因此在根据文件名的一部分选择文件时非常灵活。

mkdir -p glob_test
touch glob_test/report.txt glob_test/image.jpg glob_test/document.pdf
echo "Files ending in .txt:"
ls glob_test/*.txt
rm -rf glob_test

使用 `?` 匹配一个字符

问号(?)通配符可以匹配恰好一个字符。

当您知道要匹配的文件名部分的确切长度,却不知道具体字符时,这非常有用。

mkdir -p glob_test
touch glob_test/file1.log glob_test/file2.log glob_test/fileA.log
echo "Files matching file?.log:"
ls glob_test/file?.log
rm -rf glob_test

指定字符 `[]`

您可以使用方括号([])匹配指定字符集合中的任意一个字符。

与 ? 相比,这种方式可以实现更精确的匹配。您可以列出单个字符,也可以指定范围(例如,[a-z] 表示任意小写字母,[0-9] 表示任意数字)。

mkdir -p glob_test
touch glob_test/photoA.png glob_test/photoB.png glob_test/photoC.png glob_test/photoD.png
echo "Files matching photo[A-C].png:"
ls glob_test/photo[A-C].png
rm -rf glob_test

组合通配模式

您可以组合不同的通配模式,甚至结合花括号展开,以实现强大的文件选择功能。

Shell 会从左到右处理这些展开,创建出能够精确匹配所需内容的复杂模式。

mkdir -p glob_test
touch glob_test/data_01.csv glob_test/data_02.txt glob_test/data_a.log glob_test/info_01.txt
echo "Files matching data_[0-9]*.{txt,csv}:"
ls glob_test/data_[0-9]*.{txt,csv}
rm -rf glob_test

快速检查

以下哪个命令会列出名为 report1.doc、report2.doc 和 report3.doc 的文件,但不会列出 NOT reportA.doc?

回顾与后续步骤

做得很好!您已经了解了 Shell 如何在命令运行之前展开命令。这种“魔法”能让您的命令行操作高效得多。

  • 波浪号展开(~):主目录的快捷表示法。
  • 花括号展开({}):生成自定义字符串或序列。
  • 通配展开(*、?、[]):使用通配符匹配文件名,实现基于模式的强大选择功能。

理解这些展开方式,是编写高效、简洁命令的关键。请继续练习!

常见问题解答

「Shell 展开与通配」课时是免费的吗?

是的 — 「Shell 展开与通配」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Linux Command Line & Bash Scripting Mastery 课程的其余内容,请升级到 CoddyKit PRO。 Linux Command Line & Bash Scripting Mastery 课程共包含 4 节课。

「Shell 展开与通配」这节课中我会学到什么?

了解 Shell 如何展开命令,包括大括号展开、波浪号展开和文件名通配模式。 你通过在浏览器中直接运行的动手代码来练习 Linux Command Line & Bash Scripting Mastery,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Linux Command Line & Bash Scripting Mastery 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Linux Command Line & Bash Scripting Mastery 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「Shell 展开与通配」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Linux Command Line & Bash Scripting Mastery 课中编写并运行代码吗?

能。每节 Linux Command Line & Bash Scripting Mastery 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 作业控制(bg、fg、jobs)
  2. Shell 展开与通配
  3. 别名与自定义提示符
  4. Shell 函数与可复用代码片段
← 返回 Linux Command Line & Bash Scripting Mastery