1. 命令概述
- 命令名称:
cd(英文全拼:change directory) - 核心功能:切换当前工作目录
- 主要用途:在文件系统中导航,改变当前工作目录
- 特点:最常用的Linux命令之一,无参数时切换到用户主目录
2. 语法格式
cd [选项] [目录]
3. 常用选项
| 选项 | 说明 |
|---|---|
-P | 使用物理路径,不跟随符号链接 |
-L | 使用逻辑路径,跟随符号链接(默认) |
--help | 显示帮助信息 |
--version | 显示版本信息 |
4. 基本操作
(1) 切换目录
# 切换到指定目录
cd /path/to/directory
# 切换到用户主目录
cd
cd ~
# 切换到上一级目录
cd ..
# 切换到上两级目录
cd ../..
# 切换到根目录
cd /
# 切换到当前目录(无实际效果)
cd .
(2) 相对路径操作
# 切换到子目录
cd subdir
# 切换到父目录的子目录
cd ../otherdir
# 切换到兄弟目录
cd ../sibling
# 切换到当前目录的父目录
cd ..
# 切换到根目录下的目录
cd /etc
(3) 特殊路径操作
# 切换到用户主目录
cd ~
# 切换到其他用户的主目录
cd ~username
# 切换到上次所在的目录
cd -
# 切换到环境变量指定的目录
cd $HOME
# 切换到当前目录(刷新目录)
cd .
5. 常用实例详解
(1) 基本目录切换
# 切换到根目录
cd /
# 切换到etc目录
cd /etc
# 切换到用户主目录
cd ~
# 切换到当前用户的主目录
cd $HOME
# 切换到其他用户的主目录
cd ~root
# 切换到上次所在的目录
cd -
(2) 相对路径切换
# 假设当前在 /home/user
cd Documents # 切换到 /home/user/Documents
cd .. # 切换到 /home
cd ../.. # 切换到 /
cd ../other # 切换到 /home/other
cd ./subdir # 切换到 /home/user/subdir
cd ../../etc # 切换到 /etc
(3) 绝对路径切换
# 切换到绝对路径
cd /usr/local/bin
# 切换到用户主目录下的目录
cd ~/Documents
# 切换到其他用户的主目录下的目录
cd ~root/Documents
# 切换到环境变量指定的目录
cd $HOME/Documents
# 切换到当前目录的绝对路径
cd $(pwd)
(4) 符号链接处理
# 创建符号链接
ln -s /path/to/target linkname
# 切换到符号链接(跟随链接)
cd linkname
# 切换到符号链接的实际路径
cd -P linkname
# 切换到符号链接的父目录
cd linkname/..
# 切换到符号链接的上级目录
cd ../linkname
6. 实际应用场景
场景一:日常目录导航
# 快速回到主目录
cd
# 切换到工作目录
cd /path/to/workdir
# 切换到项目目录
cd ~/projects/myproject
# 切换到配置目录
cd /etc
# 切换到日志目录
cd /var/log
# 切换到临时目录
cd /tmp
场景二:脚本中的目录切换
#!/bin/bash
# 保存当前目录
CURRENT_DIR=$(pwd)
# 切换到工作目录
cd /path/to/workdir
# 执行操作
ls -l
# 返回原目录
cd "$CURRENT_DIR"
场景三:目录栈操作
# 将目录压入栈
pushd /path/to/dir1
# 切换到另一个目录
pushd /path/to/dir2
# 查看目录栈
dirs
# 切换到栈顶目录
popd
# 切换到栈中指定目录
pushd +N
场景四:环境变量使用
# 使用环境变量切换目录
cd $HOME
# 使用自定义环境变量
export MYDIR=/path/to/my/dir
cd $MYDIR
# 使用命令替换
cd $(dirname $(which ls))
# 使用历史命令
cd !$
# 使用通配符
cd /usr/local/*/bin
7. 与其他命令的区别
| 命令 | 特点 | 适用场景 |
|---|---|---|
cd | 切换当前工作目录 | 目录导航 |
pwd | 显示当前工作目录 | 查看当前路径 |
ls | 列出目录内容 | 查看文件列表 |
pushd | 将目录压入栈 | 目录栈管理 |
popd | 从栈中弹出目录 | 目录栈管理 |
8. 注意事项
- 目录存在性:目标目录必须存在,否则会报错
- 权限问题:必须有目录的执行权限才能进入
- 符号链接:默认跟随符号链接,使用
-P选项不跟随 - 相对路径:相对路径相对于当前工作目录
- 环境变量:可以使用环境变量作为目录路径
9. 常见问题解决
(1) 目录不存在
# 错误:目录不存在
cd /nonexistent/dir # 报错:No such file or directory
# 正确:检查目录是否存在
ls -d /path/to/dir
# 正确:创建目录后进入
mkdir -p /path/to/dir && cd /path/to/dir
# 正确:使用通配符
cd /usr/local/*/bin
(2) 权限不足
# 错误:权限不足
cd /root # 报错:Permission denied
# 正确:使用sudo
sudo cd /root # 注意:sudo cd 无效
# 正确:切换到有权限的目录
cd /tmp
# 正确:使用其他用户
su - username
cd /path/to/dir
# 正确:修改目录权限
sudo chmod +x /path/to/dir
cd /path/to/dir
(3) 符号链接问题
# 错误:符号链接指向不存在的目录
cd broken_link # 报错:No such file or directory
# 正确:检查符号链接
ls -l linkname
# 正确:修复符号链接
ln -sf /path/to/target linkname
# 正确:使用绝对路径
cd /path/to/target
# 正确:使用物理路径
cd -P linkname
(4) 特殊字符处理
# 目录名包含空格
cd "dir with spaces"
# 目录名包含特殊字符
cd dir\ with\ spaces
# 目录名包含引号
cd 'dir with "quotes"'
# 目录名包含变量
cd "$HOME/Documents"
# 目录名包含命令替换
cd "$(dirname "$0")"
核心要点总结:
cd是切换当前工作目录的命令,是Linux系统中最常用的命令之一- 常用操作:
cd(切换到主目录)、cd ..(切换到上一级目录)、cd -(切换到上次目录) - 实际应用:日常目录导航、脚本中的目录切换、目录栈管理
- 注意事项:目录必须存在且有执行权限,符号链接默认跟随,可以使用环境变量
cd命令是Linux文件系统导航的基础工具,熟练掌握可以大大提高工作效率。