你在终端里输入 cd Desktop,成功进去了。想返回上一级?输入 cd ..。想回到家目录?输入 cd ~。但当你输入 cd /usr/local/bin 时,是不是偶尔会打错一个斜杠?当你需要在上次访问的两个目录之间来回切换时,是不是还在重复输入完整路径?cd 是 Linux 中最基础、最常用的命令之一,但很多人只用到了它 10% 的功能。掌握本文的技巧,你的目录切换速度将提升一倍。
一、cd 命令的作用与基础语法
cd 是 change directory 的缩写,用于切换当前工作目录。在 Linux 中,几乎所有命令都依赖于“当前所在的目录”,因此 cd 是你每天都会用到的命令。
基础语法:
cd [目标目录]
- 如果不加任何参数,
cd 会直接返回你的家目录(/home/用户名)。 - 如果目标目录不存在,会报错:
bash: cd: xxx: No such file or directory。
二、绝对路径 vs 相对路径(核心概念)
理解绝对路径和相对路径,是掌握 cd 的关键。
| | | | |
|---|
| 绝对路径 | | / | | |
| 相对路径 | | | Documents、../Downloads、./script.sh | |
通俗理解
- 绝对路径
- 相对路径 = 相对于你当前位置的指引:“往前走100米,右手边那栋楼”
实例对比
假设当前目录是 /home/alice:
| | |
|---|
| | |
| | |
| | cd ../../etc(从 home 回根再到 etc,麻烦) |
💡 经验:跨多个层级或访问系统目录时用绝对路径;在当前家目录或项目目录内操作时用相对路径。
三、5 个最常用的快捷路径(效率神器)
🏠 ~ —— 快速回到家目录
cd ~/Pictures # 进入家目录下的 Picturescd ~ # 单独 ~ 等同于 cd
📂 .. —— 返回上一级(可叠加)
cd .. # 上一级cd ../.. # 上两级cd ../../.. # 上三级
🔄 - —— 在两个目录之间疯狂横跳
这个技巧很多老手都不知道!
$ cd /var/log$ cd /etc$ cd -/var/log$ cd -/etc
每次 cd - 都会切换回上一次所在的目录。它依赖于 Shell 变量 $OLDPWD(自动记录)。
⚠️ 注意:如果你连续执行 cd - 两次,会回到原点。适合在两个目录间反复切换的场景。
四、实战示例:一步一步切换目录
假设你的目录结构如下:
/home/alice/├── Desktop/├── Documents/│ └── work/│ └── project/└── Downloads/
场景1:从家目录进入 Documents/work/project
cd Documents/work/project # 相对路径# 或cd /home/alice/Documents/work/project # 绝对路径
场景2:从深层目录返回家目录
cd ~# 或cd# 或cd /home/alice
场景3:从 project 返回 Documents
cd .. # 从 project 到 workcd .. # 从 work 到 Documents# 或一步到位cd ../.. # 直接从 project 到 Documents
场景4:在 /var/log 和 /etc/nginx 之间来回切换
cd /var/logcd /etc/nginxcd - # 回到 /var/logcd - # 回到 /etc/nginx
五、常见错误与避坑指南
| | |
|---|
| cd: xxx: No such file or directory | | |
| | 确认目标是一个目录(用ls -l 看第一个字符是否为 d) |
cd - | Shell 没有记录$OLDPWD(比如刚打开的新终端) | |
| | 用sudo 或 chmod 修改权限(参见系列第2篇) |
| 实际上~username 可以切换到指定用户的家目录 | cd ~root |
典型错误示例
$ cd desktop # 但实际目录名是 Desktop(大写D)bash: cd: desktop: No such file or directory$ cd /usr/local/bin/ # 多了一个尾随斜杠没问题,但如果是 /usr/local/bin 后误加空格?cd /usr/local/bin / # 错误:多了空格和参数
六、高级技巧:cd 与 pushd、popd(目录栈)
如果你需要记住多个目录并快速返回,单纯的 cd - 只能记一个。这时可以用目录栈:
pushd /var/log# 切换到 /var/log,并将当前目录压入栈pushd /etc # 切换到 /etc,将 /var/log 压入栈popd# 弹出栈顶,回到 /var/log
查看目录栈:dirs -v。
这个技巧适合脚本或需要频繁在多个目录间切换的开发者。
七、总结
cd 虽然简单,但用好快捷符 ~、..、- 能极大提高效率:
cdcd ..cd -- 理解绝对路径(从
/ 开始)和相对路径(从当前位置出发)的区别,避免 No such file 错误。
记住:任何目录切换前,如果你不确定当前在哪,先用 pwd 打印当前路径,再用 ls 看看有什么。
如果你觉得本文对你有帮助,欢迎点赞、推荐、转发,关注我,后续会分享更多Linux入门干货!
文 / 零距技术仓记录每一次真实的折腾 (#^.^#)🚀 想看到更多实用折腾技巧?👉 先关注💬 评论区说说你的经历或想看的内容👍 点赞表示支持🔁 顺手分享给也在折腾的人,让大家都少踩坑 😎