cd 是 "Change Directory"(更改目录)的缩写,它是你在命令行中最常使用的命令之一,用于在文件系统的不同目录之间切换。

基本用法
cd 命令的基本语法非常简单:
cd [目录路径]
cd:命令本身。[目录路径]:你想要切换到的目标路径,这个参数是可选的,如果省略,cd会带你进入一个默认的特殊目录(通常是你的用户主目录)。
核心功能与常用路径
切换到指定目录
你可以提供绝对路径或相对路径来切换目录。
绝对路径 从根目录 开始的完整路径,无论你当前在哪里,它都能唯一地定位到一个目录。
# 切换到 /etc 目录下 cd /etc # 切换到用户主目录下的 Documents 文件夹 cd /home/your_username/Documents
相对路径 相对于你当前所在位置的路径,它更常用,因为通常不需要输入那么长的路径。

- (一个点):代表当前目录。
- (两个点):代表上级目录(父目录)。
# 假设你当前在 /home/your_username # 切换到当前目录下的 Documents 文件夹 cd Documents # 从 Documents 目录返回上一级目录(回到 /home/your_username) cd .. # 从 /home/your_username 切换到 /home/your_username/Public cd ../Public
快速返回用户主目录
这是 cd 最常用、最便捷的功能之一,任何时候,只要输入 cd 并不带任何参数,你就会立刻回到自己的主目录。
- 主目录:通常是
/home/你的用户名(在 Debian/Ubuntu/CentOS 等系统中) 或/Users/你的用户名(在 macOS 中)。
# 无论你当前在哪个目录下,执行以下命令都会回到你的主目录 cd
快捷键 (波浪号) 波浪号 是主目录的一个快捷表示,你可以在任何路径中使用它。
# 切换到主目录 cd ~ # 切换到主目录下的 Downloads 文件夹 cd ~/Downloads # 切换到另一个用户('john')的主目录 cd ~john
高级技巧与实用功能
自动补全
这是命令行效率的利器,当你输入 cd 和目录名的一部分后,按下 Tab 键,系统会自动帮你补全剩余的名称。
- 如果补全是唯一的:按一次
Tab即可。 - 如果有多个可能:按两次
Tab,系统会列出所有以你已输入字符开头的目录。
# 输入 cd Doc 然后按 Tab cd Doc<Tab> # 会自动补全为 cd Documents
访问上一次的目录
这是一个非常实用的技巧,用于在两个目录之间快速来回切换。

- (短横线):代表你上一次所在的目录。
# 假设你当前在 /home/your_username cd /var/log # 切换到 /var/log cd /tmp # 切换到 /tmp cd - # 会切换回 /var/log cd - # 再次切换回 /tmp
结合 pushd 和 popd 进行目录导航栈管理
当你需要深入多层目录,之后又要依次返回时,cd 的 功能可能就不够用了,这时 pushd 和 popd 就派上用场了。
pushd [目录]:将当前目录压入一个“目录栈”,然后切换到新目录,这个栈记录了你的“导航历史”。popd:从栈顶弹出一个目录,并切换到该目录。
# 假设你当前在 /home/your_username cd /var/log # 切换到 /var/log pushd /etc/nginx # 将 /var/log 压入栈,并切换到 /etc/nginx pushd /opt # 将 /etc/nginx 压入栈,并切换到 /opt # 此时栈的内容是: /home/your_username -> /var/log -> /etc/nginx -> /opt # 栈顶是 /opt popd # 弹出 /opt,切换回 /etc/nginx popd # 弹出 /etc/nginx,切换回 /var/log popd # 弹出 /var/log,切换回 /home/your_username
你可以使用 dirs 命令来查看当前的目录栈内容。
环境变量 CDPATH
CDPATH 的作用和 PATH 环境变量类似,它定义了一组 cd 命令会搜索的目录,当你输入一个不存在的相对路径时,cd 会依次在 CDPATH 定义的目录中查找。
# 查看 CDPATH echo $CDPATH # 输出通常是空的或默认值 # 设置 CDPATH,让它包含你的主目录和 /etc 目录 export CDPATH=".:~:/etc" # 现在你可以这样做: cd nginx # 会自动在 ~ 和 /etc 中寻找 nginx 目录 # 如果你的主目录下没有 nginx 目录,但 /etc/nginx 存在,就会直接切换过去
注意:虽然
CDPATH很强大,但有时会带来意想不到的行为,因为它会“隐藏”当前目录下的同名目录,很多高级用户会选择不使用它。
常见错误与解决方案
| 错误信息 | 原因 | 解决方案 |
|---|---|---|
bash: cd: too many arguments |
你给 cd 命令提供了多个目录路径。 |
只提供一个目标目录路径。 |
bash: cd: oldwd: No such file or directory |
你试图使用 cd -,但系统无法找到你上一次所在的目录(通常发生在 Shell 会话开始时)。 |
无需担心,这只是一个无害的警告,你可以正常使用 cd。 |
bash: cd: somedir: No such file or directory |
你指定的目录不存在,或者你没有权限访问。 | 检查目录名拼写是否正确,或者使用 ls 命令查看当前目录下有哪些文件和文件夹。 |
总结表格
| 命令 | 功能描述 | 示例 |
|---|---|---|
cd |
切换到用户主目录 | cd |
cd ~ |
切换到用户主目录 | cd ~ |
cd - |
切换到上一次所在的目录 | cd - |
cd .. |
切换到上一级目录 | cd .. |
cd . |
切换到当前目录(无实际变化) | cd . |
cd / |
切换到根目录 | cd / |
cd /path/to/dir |
使用绝对路径切换目录 | cd /var/www/html |
cd dir |
使用相对路径切换目录 | cd Documents |
cd ../sibling |
切换到同级目录 | cd ../Pictures |
pushd /path |
将当前目录压栈并切换到新目录 | pushd /opt |
popd |
从栈中弹出目录并切换 | popd |
dirs |
显示目录栈的内容 | dirs |
掌握 cd 命令是熟练使用命令行的第一步,理解它的各种用法和技巧,特别是相对路径、 和 ,将极大地提升你在终端中的工作效率。
