终端里跳错目录是高频操作。本文用实测过的命令帮你快速回到正确位置,覆盖 4 种切换写法。
一、cd -:跳到上次所在目录
# 两次 cd - 在 /tmp 和 /etc 之间往返(WSL2 Ubuntu 24.04,bash 5.2.x 实测)
cd /tmp
cd /etc
cd - # 输出:/tmp
cd - # 再打一次,又回 /etc
输出路径就是当前工作目录,可以直接读取下一步要往哪走 [1]。
二、cd ..:逐级向上返回
cd /var/log/nginx # 在 /var/log/nginx 下
cd .. # 回到 /var/log
cd /var/log/nginx/site-a/deep # 在 /var/log/nginx/site-a/deep 下
cd ../.. # 一次向上两级,到 /var/log/nginx
cd ../../.. # 一次向上三级
.. 是每个目录里的 . 和 .. 特殊条目之一,指向当前目录的父目录;连续几个 ../ 可以一次向上多级 [2]。
从深层目录快速跳出常见写法:
# 在 /a/b/c/d/e 里,回到 /a/b
cd ../../.. # 等价于 cd ../../../.. 的简化计算
每次 cd 之后,$OLDPWD 都会自动记录出发位置,形成完整的路径跳转历史 [4]。
三、用 pwd 确认当前实际位置
cd /var/log
pwd # 逻辑路径:/var/log
ln -sfn /etc /tmp/mylink
cd /tmp/mylink
pwd # 逻辑:/tmp/mylink
pwd -P # 物理:/etc(解析符号链接)
rm /tmp/mylink
访问路径时,$PWD 环境变量同步记录逻辑路径;/proc/self/cwd 也是当前目录的符号链接,由内核维护,可以直接读取 [5]。pwd 的 -L(默认)和 -P 行为由 POSIX 和 Linux man7 记录 [3][4]。
四、排错速查表
| 现象 | 原因 | 处理 |
|---|---|---|
cd - 第一次报错 |
从未切换过目录,$OLDPWD 为空 | 先 cd 到另一个目录再试 |
cd .. 无法向上 |
已在根目录 /,父目录就是本身 | pwd 确认当前路径 |
多层 .. 计算错误 |
少算或多算了一层 | pwd 先确认当前层级 |
pwd 显示路径有误 |
当前路径含符号链接 | 用 pwd -P 查物理路径 |
参考资料
- [1] Bash Reference Manual — Bourne Shell Builtins (GNU.org)(bash-builtins)
- [2] POSIX cd Utility — IEEE Std 1003.1-2024(posix-cd)
- [3] pwd(1) — Linux manual page (man7.org)(pwd-1)
- [4] POSIX pwd Utility — IEEE Std 1003.1-2024(posix-pwd)
- [5] proc(5) — Debian bookworm 手册页(proc-5)
文中主要命令已在 WSL Ubuntu(24.04)实测并核对其在 Debian 系与通用发行版的文档口径。