文章目录
1. 命令格式
cd [-L|-P] [dir]
- -L: (默认行为) 如果 dir 是一个符号链接,则切换到该符号链接指向的目录
- -P: (Physical) 如果 dir 是一个符号链接,则切换到该符号链接本身的物理位置,而不是它指向的位置。此选项会解析所有符号链接,使你进入一个“物理”绝对路径
- [dir]: 目标目录。它可以是一个绝对路径(如 /usr/local/bin)、一个相对路径(如 …/Documents)或一些特殊的符号(如 ~, -)。如果省略 [dir],则默认为当前用户的家目录(~)
2. 基本用法
2.1 切换到当前用户的家目录
cd
# 或者
cd ~
2.2 切换到指定目录(绝对路径)
cd /usr/share/doc
2.3 切换到指定目录(相对路径)
cd Documents/Projects # 进入当前目录下的 Documents/Projects 文件夹
cd .. # 进入上一级目录 (父目录)
cd ../Music # 进入与当前目录同级的 Music 目录
2.4 切换到上一个工作目录
cd -
# 示例:
/home/user/Documents$ cd /var/log
/var/log$ cd -
/home/user/Documents$
3. 高级用法
3.1 使用 $OLDPWD 环境变量
cd - 的原理其实就是切换到了 $OLDPWD 环境变量所存储的路径。你可以直接使用这个变量
echo $OLDPWD # 查看上一个目录的路径
cd "$OLDPWD" # 效果同 `cd -`
3.2 使用 Tab 键自动补全
这不是 cd 命令本身的特性,而是 Shell(如 Bash)提供的功能。输入路径的一部分,然后按 Tab 键,Shell 会自动补全路径或列出可能的选择,能有效防止输错路径
3.3 CDPATH 环境变量
这是一个非常有用但常被忽略的功能。你可以设置一个冒号分隔的目录列表,当你使用相对路径时,cd 命令会优先在这些目录中查找
# 在 ~/.bashrc 文件中添加一行
export CDPATH=".:~:~/Work" # 先在当前目录(.)找,然后在家目录(~)找,最后在 ~/Work 找
# 重新加载配置
source ~/.bashrc
# 现在,无论你在哪个目录下,都可以直接输入
cd project-alpha
# 如果当前目录没有 project-alpha,它会自动去 ~/Work 目录下找。
# 如果 ~/Work/project-alpha 存在,你就会直接进入那个目录。
4.注意事项
4.1 空格和特殊字符
如果目录名包含空格或特殊字符(如 !, $, *, 空格),必须用引号将其括起来,或者使用反斜杠 \ 进行转义
cd "My Projects" # 正确
cd My\ Projects # 正确
cd My Projects # 错误!这会被解析为试图进入 "My" 和 "Projects" 两个目录
4.2 权限问题
你必须有对目标目录的 执行 (x) 权限 才能进入它。只有读 ® 权限是不够的
ls -ld /root # 通常显示为 drwx------,意味着只有 root 用户能进入
cd /root # 普通用户会提示 "Permission denied"
4.3 不存在路径
如果路径不存在,cd 会报错 No such file or directory
4.4 内建命令
cd 是 Shell 内建命令, 它不是磁盘上的一个独立程序,而是 Shell 的一部分。因此 which cd 通常会没有输出或显示为 shell builtin。它的行为可能因 Shell 的不同而有细微差别。