跳到内容

第 0 卷 / 第 2 章 / 第 2 课

2.2 当前目录与路径 ​

前置知识:第一次和 Shell 对话

预计时间:8 分钟

练习环境:Bash/Zsh 与常见 Unix 命令

完成标志:能解释当前目录、绝对路径、相对路径、~ 和 ..

刚才的四条命令都没有改动文件。如果现在执行 touch note.txt,文件会出现在哪里?答案取决于 Shell 的当前工作目录。先把位置弄清楚,后面的文件操作才不会落错地方。

在哪里,看见什么 ​

bash
pwd
ls
ls -la
  • pwd 打印当前工作目录。
  • ls 列出非隐藏条目。
  • ls -la 显示详情,并包含以 . 开头的名字。

不要假设输出是 /home/steven。Linux 常见 /home/用户名,macOS 常见 /Users/用户名,容器和远程主机还会有其他布局。

用临时目录练习移动 ​

bash
workdir=$(mktemp -d)
mkdir -p "$workdir/project/src"
cd "$workdir"
pwd
cd project/src
pwd
cd ..
pwd
cd -
pwd

路径分两类:

  • /tmp/example 从根目录 / 开始,是绝对路径。
  • project/src 从当前目录开始,是相对路径。

特殊写法:

写法含义
.当前目录
..上一级目录
cd -回到上一个工作目录
cd回到家目录
~Shell 展开的家目录简写

~ 不是当前目录。它与 $HOME 也不是纯文本替换关系:

bash
printf '%s\n' ~
printf '%s\n' "$HOME"
printf '%s\n' '~'

第三行会原样打印 ~,因为引号阻止了波浪号展开。

补全和文件名边界 ​

输入路径前几个字符后按 Tab,可以减少拼写错误。多个候选项时,不同 Shell 的展示方式略有差异。

Linux 文件名通常区分大小写;macOS 的默认文件系统常不区分,但项目和部署环境未必如此。跨平台仓库应避免只靠大小写区分两个文件。

清理练习区前,先离开它:

bash
cd
printf 'remove after inspection: %s\n' "$workdir"
rm -r -- "$workdir"

这里的变量由 mktemp -d 生成并始终被引用。真实工作中仍应先用 ls -ld -- "$workdir" 检查目标。

→ 下一步:文件操作

Built with VitePress | Software Systems Atlas