Linux cd 命令
概述
cd(Change Directory)是 Linux 系统中最基础且最重要的命令之一。它用于改变当前工作目录(CWD)。掌握它是学习 Linux 文件系统操作的第一步,相当于学会在 Linux 的目录树中“走路”。
基础概念
当前工作目录
每个用户在登录 Shell 时,都会有一个初始位置(通常是用户的家目录 /home/username 或 /root)。所有相对路径的解析都依赖于这个当前目录。
查看当前目录
在执行切换前,通常需要确认当前位置,使用的命令是 pwd(Print Working Directory)。
示例:
pwd
预期输出:
/root
基本语法与用法
1. 绝对路径导航
绝对路径从根目录(/)开始,完整描述文件或目录的位置,不受当前目录影响。
常用示例:
# 切换到 Nginx 配置目录 cd /etc/nginx # 切换到 Web 根目录 cd /var/www/html
2. 相对路径导航
相对路径基于当前所在目录,利用特殊目录符号进行定位。 - . :代表当前目录(通常可省略)。 - .. :代表上级目录。 - ~ :代表当前用户的家目录。
常用示例:
# 返回上级目录 cd .. # 返回上两级目录(可叠加使用) cd ../../ # 进入当前目录下的 config 子文件夹 cd ./config # 或简写为 cd config
高级用法与技巧
1. 快速返回上一个目录
使用 cd - 可以在当前目录与上一个目录之间快速切换,非常适合在两个相距较远的目录间反复操作。
示例:
cd /var/log cd /etc/nginx # 此时执行 cd - # 结果:返回 /var/log
2. 处理符号链接(软链接)
当进入一个符号链接指向的目录时,pwd 默认显示逻辑路径(链接路径)。如果使用 pwd -P,则会显示实际的物理路径。
示例场景: 假设 /home/link 指向 /var/data。
cd /home/link pwd # 输出:/home/link pwd -P # 输出:/var/data
3. 目录结构参考
以下是本课程常用的目录结构示例,理解它有助于后续实战练习:
/home/user/ ← 假设当前位置 ├── Documents/ ├── Downloads/ ├── projects/ │ ├── web-app/ │ └── scripts/ └── readme.txt
运维实战技巧
以下技巧能显著提升你在终端中的操作效率:
Tab 键,系统会自动补全目录名。若有多个匹配项,再按一次 Tab 会列出所有选项。这能有效避免拼写错误。 示例:输入 cd /var/l 后按 Tab,会自动补全为 cd /var/log/。ls 查看目录内容,或使用 ls -d / 查看子文件夹,避免出现 No such file or directory 报错。 示例:ls -d /etc/ng 可以查看是否存在 nginx 相关目录。cd 常与 &&(逻辑与)连用,只有切换成功时才执行后续操作,保证脚本的健壮性。 示例:cd /backup && tar -czf data.tar.gz ./data实战练习
每个练习均模拟真实运维场景,请尝试手打命令,并观察输出结果。
场景 1:日志分析
目标:切换到 Nginx 日志目录,查看所有文件大小,然后返回原来的目录。
步骤与命令:
# 1. 切换到日志目录 cd /usr/local/nginx/logs # 2. 查看当前目录所有文件的详细信息(含大小) ls -lha # 3. 返回切换前的目录(利用 cd -) cd -
预期结果:成功列出 logs 下的文件列表,并回到执行脚本前的起始目录。
场景 2:配置管理
目标:切换到 NTP 配置目录,查看密钥文件内容,然后返回上级目录。
步骤与命令:
# 1. 切换到 ntp 配置目录 cd /etc/ntp # 2. 查看 keys 文件内容(假设文件存在) cat keys # 3. 返回上级目录(/etc) cd ..
预期结果:终端显示 keys 文件的内容,当前目录变为 /etc。
场景 3:应用部署(相对路径综合练习)
目标:从 Web 根目录出发,使用相对路径在 css 和 js 子目录间切换。
步骤与命令:
# 1. 进入 Web 根目录 cd /var/www/html # 2. 进入 assets 下的 css 文件夹 cd assets/css # 3. 从 css 文件夹跳转到同级的 js 文件夹(利用相对路径) cd ../../js
预期结果:最终当前目录为 /var/www/html/assets/js。
场景 4:备份操作(结合变量)
目标:利用 cd 配合日期变量,进入以当天日期命名的备份文件夹。
步骤与命令:
# 1. 进入备份主目录 cd /home/user/backups # 2. 进入以当前日期命名的子目录(例如 20260902) cd $(date +%Y%m%d)
预期结果:若存在对应日期的文件夹,则成功进入;否则会提示目录不存在(可先用 mkdir 创建)。
常见错误与解决方案
错误 1:权限不足(Permission Denied)
报错信息:
bash: cd: /root: Permission denied
原因:普通用户无权进入 root 用户的家目录。 解决方案:使用 sudo -i 切换到 root 用户,或检查目录权限(使用 ls -ld /root 查看),确认自己是否有执行(x)权限。
错误 2:目录不存在(No such file or directory)
报错信息:
bash: cd: /nonexistent: No such file or directory
原因:路径拼写错误,或目录被误删。 解决方案: 1. 使用 ls 查看当前目录下的内容,确认拼写。 2. 检查是否遗漏了开头的 /(绝对路径)或 ../(相对路径)。 3. 利用 Tab 键自动补全来预防此错误。
错误 3:误入文件而非目录
报错信息:
bash: cd: not a directory: filename.txt
原因:试图 cd 进入一个普通文件。 解决方案:使用 ls -l 确认目标类型,第一列以 - 开头的是文件,以 d 开头的是目录。