Shell 展开与通配
了解 Shell 如何展开命令,包括大括号展开、波浪号展开和文件名通配模式。
Shell 展开与通配 是 CoddyKit 上的免费 DevOps Bootcamp 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 DevOps Bootcamp 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 DevOps Bootcamp 课程共包含 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 导师)并解锁 DevOps Bootcamp 课程的其余内容,请升级到 CoddyKit PRO。 DevOps Bootcamp 课程共包含 4 节课。
「Shell 展开与通配」这节课中我会学到什么?
了解 Shell 如何展开命令,包括大括号展开、波浪号展开和文件名通配模式。 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 DevOps Bootcamp 需要有经验吗?
无需任何先前经验。CoddyKit 上的 DevOps Bootcamp 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「Shell 展开与通配」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 DevOps Bootcamp 课中编写并运行代码吗?
能。每节 DevOps Bootcamp 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 作业控制(bg、fg、jobs)
- Shell 展开与通配
- 别名与自定义提示符
- Shell 函数与可复用代码片段