Kodokon kodokon.com

相对路径、绝对路径和通配符

用绝对路径或相对路径指向任意文件,并一次性对多个文件动手。

8 分钟 · 3 题

在 Kodokon 中打开本课

指出一个文件在哪里有两种方式,就和给出一个地址完全一样。绝对路径是完整的邮政地址:它从根目录出发,在任何地方都管用。在 macOS 和 Linux 上,它总是以一个正斜杠 / 开头,例如 /home/yoann/my-project/index.html。在 Windows 上,它以一个盘符开头,例如 C:\Users\yoann\my-project

相对路径则更像是“左手边第二扇门”:它从你当前所在的文件夹出发。三个符号就足以表达一切。点 . 表示当前文件夹。两个点 .. 表示父文件夹。波浪号 ~ 表示你的主文件夹。用斜杠把它们串起来,就能拼出一条路线。

BASH
cd /home/yoann/my-project
cd ~/my-project
cd ../other-project
cat ./src/index.html
cp ../photo.jpg .
同一个文件夹先用绝对方式再用相对方式抵达,以及一次向当前文件夹的复制。

当你要对十个文件动手时,你总不会去敲十条命令。shell 认识通配符,也叫模式:一些用来代替一个或多个未知字符的特殊符号。星号 * 代表任意长度的字符序列,包括一个字符都没有。问号 ? 代表恰好一个字符。方括号 [ ] 接受列在它里面的任意一个字符。

BASH
ls *.html
ls src/*.css
ls photo-?.jpg
ls report-202[45].pdf
cp *.txt archive/
所有 .html 文件、某个子文件夹里的 .css 文件、photo-1 到 photo-9、2024 和 2025 年的报告。

最后一个能免去许多麻烦的细节:在 macOS 和 Linux 上,文件名是区分大小写的。Photo.jpgphoto.jpg 是两个不同的文件,ls photo* 找不到前者。而 Windows 并不作这种区分。所以一个在你 Windows 机器上跑得好好的项目,可能仅仅因为一个大写字母,就在托管它的 Linux 服务器上失败。

知识检测

确认你已牢记本课的重点内容。

  1. 在 macOS 或 Linux 上,绝对路径总是以什么开头?
    • 一个点 .
    • 一个正斜杠 /
    • 一个波浪号 ~
    • 当前文件夹的名字
  2. 模式 *.html 匹配的是什么?
    • 所有名字以 .html 结尾的文件
    • 只有那个名字正好叫 *.html 的文件
    • 文件夹里的所有文件,不管它们是什么类型
  3. 你想安全地删除所有 .tmp 文件。你会采取什么预防措施?
    • 先运行 rm *.tmp,然后用 ls 检查
    • 先运行 ls *.tmp,看看哪些将被删除
    • 不需要,shell 总会要求确认