Linux基本指令篇 —— cd指令
cd是 Linux 和 Unix 系统中最基础且使用频率最高的命令之一,全称 Change Directory(切换目录)。它的功能是改变当前工作目录。以下是关于cd的详细解析:
目录
0.前言
Linux理论知识:路径的认识
1. 基本用法
常见操作示例
1)cd ../(切换到上级目录(父目录))
2)cd 绝对路径 (切换到绝对路径指定的目录)
3)cd 相对路径 (使用相对路径改变当前工作目录)
4)cd ~ (切换到当前用户的家目录,~是家目录的简写)
5)cd - (切换到上一次所在的目录(类似“返回”功能))
6)cd ../../ (切换到上两级目录。)
7) cd ./subdir (切换到当前目录下的子目录(./ 可省略))
2. 特殊符号与路径处理
举个栗子:
目标:从 /home/hmz 快速进入 mydir
操作步骤:
3. 常见问题与技巧
Q1: 目录名有空格或特殊字符怎么办?
Q2: 如何快速切换到家目录的子目录?
4. 环境变量关联
5. 脚本中的注意事项
6. 扩展技巧
快速切换高频目录
结合 find 跳转到模糊匹配的目录(选学)
0.前言

Linux理论知识:路径的认识
- Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件。
- 其中普通文件一定是目录树的叶子节点。
- 目录可能是叶子(空目录),也可能是路上节点。
- 理解路径存在的意义:树状组织方式,都是为了保证快速定位查找到指定的文件,而定位文件就需要具有唯一性的方案来进行定位文件。其中任何一个节点,都只有一个父节点,所以,从根目录开始,定位指定文件,路径具有唯一性。
- 绝对路径:一般从/开始,不依赖其他目录的定位文件的方式。
- 相对路径:相对于当前用户所处目录,定位文件的路径方式。
- 绝对路径一般不会随着用户的路径变化而丧失唯一性,一般在特定服务的配置文件中经常被使用。
- 相对路径因为它的便捷性,一般在命令行中使用较多。

1. 基本用法
功能:改变工作目录。将当前工作目录改变到指定的目录下。
语法:
cd [目录路径]
-
如果省略
目录路径,默认切换到当前用户的家目录(HOME环境变量指定的目录)。
常见操作示例
1)cd ../(切换到上级目录(父目录))

2)cd 绝对路径 (切换到绝对路径指定的目录)

3)cd 相对路径 (使用相对路径改变当前工作目录)

4)cd ~ (切换到当前用户的家目录,~是家目录的简写)

注意:操作系统中的普通用户家目录默认为 /home/xxx,root用户家目录默认为 /root。
5)cd - (切换到上一次所在的目录(类似“返回”功能))

6)cd ../../ (切换到上两级目录。)

7) cd ./subdir (切换到当前目录下的子目录(./ 可省略))

2. 特殊符号与路径处理
| 符号 | 说明 |
|---|---|
. | 当前目录(通常可省略,如 cd ./dir 等价于 cd dir)。 |
.. | 上级目录(父目录)。 |
| ~ | 当前用户的家目录(如 ~ubuntu 表示用户 ubuntu 的家目录)。 |
- | 上一次的工作目录(通过 OLDPWD 环境变量记录)。 |
* | 通配符(需结合 Tab 补全使用,如 cd D* 进入第一个匹配的目录(匹配以 D 开头的目录))。 |
举个栗子:
目标:从 /home/hmz 快速进入 mydir
cd m* # 自动匹配第一个以 m 开头的目录(mydir)
-
如果
m*只匹配到mydir,会直接进入。 -
如果还有
music、mmmdir等目录,则会出现下面这种情况:
若想要查找对应所需的目录,则需用
Tab补全选择(重新跟着下面步骤来一遍)。
操作步骤:
-
输入
cd m,然后按Tab。 -
系统会显示所有以
m开头的目录(如mydir/,music/)。 -
继续输入
y变成cd my,再按Tab自动补全为cd mydir/。 -
按回车进入。

3. 常见问题与技巧
Q1: 目录名有空格或特殊字符怎么办?
-
用引号包裹路径,或使用转义符
\:cd "My Documents" # 正确 cd My\ Documents # 正确 cd My Documents # 错误(会被解析为两个参数)
Q2: 如何快速切换到家目录的子目录?
-
直接使用缩写~/[目录]:

4. 环境变量关联
-
$HOME:用户家目录路径(cd无参数时默认值)。 -
$OLDPWD:记录上一次的目录(cd -依赖此变量)。 -
$PWD:当前目录路径(可通过echo $PWD查看,类似pwd命令)。
示例:

5. 脚本中的注意事项
-
脚本中建议使用绝对路径:避免因工作目录变化导致路径错误。
# 推荐写法 cd /opt/app || exit 1 # 如果切换失败则退出脚本 -
错误处理:检查目录是否存在:
if [ -d "/path/to/dir" ]; then # 检查 "/path/to/dir" 是否存在且是一个目录cd "/path/to/dir" # 如果存在,则切换到该目录 elseecho "目录不存在!" # 如果不存在,输出错误信息 fi

1. if [ -d "/path/to/dir" ]; then
-
[ -d "/path/to/dir" ]-
[ ... ]是 Bash 的条件测试语法(等同于test ...)。 -
-d是测试运算符,用于检查 路径是否存在且是一个目录。 -
"/path/to/dir"是要检查的目标路径(需替换为实际路径)。
-
-
; then-
表示如果条件成立(目录存在),则执行后续代码块。
-
2. cd "/path/to/dir"
-
如果条件成立(目录存在),则执行
cd切换到该目录。 -
路径用双引号包裹,防止因空格或特殊字符导致错误。
3. else
-
如果条件不成立(目录不存在),则执行
else部分的代码。
4. echo "目录不存在!"
-
输出错误提示信息,告知用户目录不存在。
5. fi
-
结束
if条件语句块。
6. 扩展技巧
快速切换高频目录
-
使用
pushd和popd管理目录栈:pushd /tmp # 进入 /tmp 并记录目录 pushd /var/log # 进入 /var/log 并记录
popd # 返回上一个目录(/tmp) popd # 返回最初目录
结合 find 跳转到模糊匹配的目录(选学)
cd $(find / -type d -name "project*" 2>/dev/null | head -n 1)
