Skip to content

cd 与 pwd 命令详解:搞清楚你"现在在哪、要去哪" ​

本文是 Linux 命令速查 中 cd 与 pwd 的从 0 到 1 详解,本篇一次讲清这两个最基础的"位置类"命令。 目标:把 help cd、help pwd 里的每个选项讲清楚,多看几遍后,你在服务器上敲 cd、pwd 就知道该怎么用。 环境依据:cd、pwd 都是 bash 内建命令(GNU bash 5.1.16 自带,用 help cd、help pwd 取语法);另有外部版 /bin/pwd 属 GNU coreutils 8.32。RHEL 系与 Debian 系用法一致。

一、命令是干什么的 ​

在字符界面里操作 Linux,你随时要回答两个问题:

  • pwd(print working directory):我现在站在哪个目录?打印当前工作目录的绝对路径。
  • cd(change directory):我要去哪个目录?切换当前工作目录。

它们就像 Windows 资源管理器窗口的"地址栏":pwd 是看地址栏现在写的什么,cd 是在地址栏输入一个新路径然后回车进去。只不过命令行没有"点击文件夹",一切靠敲路径。

类比:Windows 里你双击文件夹就是 cd;你看窗口顶上那行路径就是 pwd。Linux 服务器没有图形界面,这两个命令就是你的"眼睛"和"腿"。

注意:cd、pwd 不是独立安装的小程序,而是 bash 自带的内建命令,用 type cd 能看到 cd is a shell builtin。

二、命令语法 ​

bash
# pwd:打印当前目录
pwd [-LP]

# cd:切换目录
cd [-L|[-P [-e]]] [目录]
  • pwd:几乎不带参数,-L/-P 控制显示逻辑路径还是物理路径(见下);
  • cd 后面跟目标目录:写绝对路径(以 / 开头)或相对路径(相对当前目录);
  • cd 不带任何参数:直接回到"家目录"($HOME);
  • 特殊写法:cd - 回到上一次所在的目录。

最简单的用法:

bash
pwd        # 看现在在哪
cd /etc    # 去 /etc

三、选项全表(对照 help cd / help pwd) ​

1. pwd 的选项 ​

选项中文含义什么场景用
-L打印逻辑路径(默认),顺着你走过的软链接显示日常用,跟你"感觉上"所在的目录一致
-P打印物理路径,把软链接全部解析成真实目录排查软链接导致的路径迷惑时

不带选项时,pwd 行为等同 -L。

2. cd 的选项 ​

选项中文含义什么场景用
-L跟随软链接(默认),处理 .. 时按逻辑路径算日常使用,从软链接目录 cd .. 回到你进来的地方
-P用物理目录结构,不跟随软链接,先解析再处理 ..想得到真实磁盘路径时(脚本里常用)
-e配合 -P,若物理目录确定不出来就返回非零脚本里严格校验时用

说明:cd 最常用的根本不是这些选项,而是它后面的目录参数。选项只在你用软链接、且对"真实路径 vs 逻辑路径"敏感时才需要。

四、由浅入深的典型示例 ​

示例 1:看当前在哪 ​

bash
pwd
text
/tmp/cmddemo

示例 2:用绝对路径切换目录 ​

bash
cd /etc
pwd
text
/etc

以 / 开头是绝对路径,从根目录算起,任何目录下都能直接用。

示例 3:回家、回上级、原地不动 ​

bash
cd ~        # 回到家目录
pwd
cd ..       # 上级目录
pwd
cd .        # 留在当前目录(一般单独用没意义,多见于拼接路径)
pwd
text
/home/user
/home
/home

~ 代表家目录;.. 是上一级;. 是当前目录。cd 后面完全不写参数也等于 cd ~。

示例 4:cd - 在两个目录间来回跳 ​

bash
cd /etc
cd -
pwd
text
/etc

cd - 会回到你上一次所在的目录,并把那个目录打印出来(这里被我们吞掉了)。在两个深目录之间反复横跳时非常好用。

示例 5:相对路径——一层层进 ​

bash
cd /tmp/cmddemo
mkdir -p a/b/c
cd a/b/c
pwd
cd ..
pwd
cd ../..
pwd
text
/tmp/cmddemo/a/b/c
/tmp/cmddemo/a
/tmp/cmddemo

相对路径是相对"你现在站的地方"。cd .. 一次退一级,cd ../.. 连退两级。

示例 6:软链接下,-L(默认)与 -P 的区别 ​

先造一个软链接目录:link -> a,结构是 a/b。

bash
cd /tmp/pt/link/b
pwd        # 默认 -L:逻辑路径
pwd -P     # 物理路径,解析掉软链接
text
/tmp/pt/link/b
/tmp/pt/a/b
bash
# 默认(-L)模式下,从 link/b 退一级
cd /tmp/pt/link/b
cd ..
pwd
text
/tmp/pt/link
bash
# -P 物理模式下,从 link/b 退一级
cd /tmp/pt/link/b
cd -P ..
pwd
text
/tmp/pt/a

看懂这个例子就理解了软链接:默认 -L 把软链接当成"真目录",退 .. 回到你"进来的地方";-P 按磁盘真实位置退,回到软链接指向的那个真实目录的上级。

示例 7:内建 pwd 与外部 /bin/pwd 的差别 ​

bash
cd /tmp/pt/link/b
pwd        # 内建,逻辑路径
/bin/pwd   # 外部程序,物理路径
text
/tmp/pt/link/b
/tmp/pt/a/b

在软链接目录里,内建 pwd 默认给逻辑路径,而 /bin/pwd 这个外部程序给的是物理路径。日常敲 pwd 用的是内建版。

五、高频组合速记 ​

实际工作中基本就这几个,背下来即可:

命令用途
pwd看现在在哪
cd 目录去某个目录
cd 或 cd ~回家目录
cd -回上一个目录(来回切换神器)
cd ..回上一级
cd ../..连退两级
pwd -P看真实物理路径

六、RHEL 系与 Debian 系差异 ​

cd、pwd 是 bash 内建命令,只要用的是 bash 就一样,RHEL/CentOS/Rocky 与 Ubuntu/Debian 用法完全一致。仅有的细微点:

  • 系统默认 shell 可能不是 bash(例如某些精简版用 sh/dash),但服务器上登录后基本都是 bash;
  • /bin/pwd 外部版在两系都由 coreutils 提供,行为一致;
  • ~ 展开依赖 $HOME,两系登录后都会正确设置。

七、新手易错点 ​

  1. cd 之后没有输出不代表失败:cd 成功是"静悄悄"的,切完就等你下一条命令;想确认位置就再 pwd。
  2. 目录名打错会报 No such file or directory:注意大小写(Linux 区分大小写,/ETC ≠ /etc),注意空格——路径里有空格要加引号或转义。
  3. 以为删不掉软链接里的东西:cd 进软链接目录后 rm -rf . 删的是真实目录里的内容,软链接本身还在;别在软链接目录里乱删。
  4. cd 失败时当前目录不会变:命令失败你还原地不动,不会被踢到奇怪的地方,放心试。
  5. 脚本里慎用相对路径:脚本被不同人从不同目录调用时,相对路径会翻车;脚本开头最好先 cd "$(dirname "$0")" 或用绝对路径。
  6. cd 是内建命令,脚本 #!/bin/sh 里也能用:它不靠外部 PATH,任何 shell 脚本里都能 cd。

八、相关命令与文档 ​

  • 速查页:Linux 命令速查
  • 进去后看里面有什么:ls(详解见 ls)
  • 递归看整棵目录树:tree(详解见 tree)
  • 想按名字/条件找文件:find(详解见 find)
  • 目录权限怎么看:见 chmod
  • 想搞懂软链接原理:ln(详解见 ln)
  • Shell 基础与工作目录概念:见 Shell 入门