在Linux操作系统中,目录切换是日常操作中的基础技能,而“回到上一级目录”则是最常用的操作之一,Linux文件系统以树状结构组织,每个目录(除根目录外)都有一个父目录,即“上一级目录”,掌握回到上一级目录的方法,不仅能提升操作效率,还能更好地理解Linux的目录结构逻辑。

核心命令:cd ..——回到上一级目录的标准方法
在Linux中,cd是“change directory”(切换目录)的缩写,而是Linux系统中用于表示“父目录”的特殊符号。cd ..是回到上一级目录最直接、最常用的命令。  
的含义与原理
Linux文件系统中,每个目录都包含两个特殊的隐藏目录:
- 表示当前目录(如
./file.txt等同于file.txt); - 表示父目录(即上一级目录)。
 
假设当前路径为/home/user/docs,  
- 是根目录;
 /home是根目录下的子目录;/home/user是/home的子目录;/home/user/docs是/home/user的子目录。
/home/user就是/home/user/docs的父目录,执行cd ..后,路径会从/home/user/docs切换至/home/user。  
基本语法与示例
cd ..
示例:
- 初始位置:
/var/log/nginx
执行cd ..后,路径变为/var/log(回到nginx的父目录)。 - 再次执行
cd ..,路径变为/var(回到log的父目录)。 - 若当前已在根目录,执行
cd ..后仍停留在(因为根目录没有父目录,指向自身)。 
扩展用法:多层上级目录与路径组合
除了回到上一级目录,还可与其他路径组合,实现更灵活的目录切换。

回到上两级或多级目录
若需回到上两级目录,可连续使用,例如cd ../..:  
- 当前路径:
/home/user/docs/project - 执行
cd ../..后,路径变为/home/user(跳过docs,直接回到user)。 - 若需回到上三级目录,则用
cd ../../..,以此类推。 
结合绝对路径与相对路径
- 绝对路径:从根目录开始的完整路径,如
/opt/app/config。
若当前在/opt/app/config/logs,需回到/opt,可直接执行cd /opt(无需)。 - 相对路径:基于当前目录的路径,如
../backup(表示进入当前目录的上一级目录中的backup目录)。
当前路径/home/user/docs,执行cd ../backup会切换至/home/user/backup。 
特殊场景:根目录与权限问题
根目录下的cd ..
Linux的根目录是文件系统的顶层,没有父目录,此时指向自身,因此执行cd ..后路径不变,仍为,可通过pwd(print working directory)命令查看当前路径:  
pwd # 输出:/ cd .. pwd # 输出仍为:/
权限问题导致的切换失败
若执行cd ..提示“Permission denied”(权限拒绝),可能是当前用户对父目录无执行权限(目录的“x”权限决定是否可进入)。/root目录默认只有root用户可访问,普通用户执行cd /root会报错,此时自然也无法通过cd ..从/root的子目录返回。  
进阶技巧:目录栈与历史记录
cd -:快速切换到上一个目录
若需在两个目录间频繁切换,可用cd -回到上一个访问的目录。  
cd /var/log # 进入/var/log cd /tmp # 切换到/tmp cd - # 返回/var/log cd - # 再次切换到/tmp
cd -的本质是利用了shell的目录历史记录,每次切换目录时,shell会保存“上一个目录”的信息。  
pushd与popd:管理目录栈
当需在多个目录间切换并保持历史记录时,可使用目录栈(directory stack):

pushd 目录名:将目录压入栈顶,并切换到该目录;popd:弹出栈顶目录,并切换到新的栈顶目录;dirs:查看目录栈内容(栈顶在左侧)。
pushd /home/user/docs # 压入/home/user/docs,当前路径切换至此 pushd /var/log # 压入/var/log,当前路径切换至此,栈内容:/var/log /home/user/docs popd # 弹出/var/log,切换到/home/user/docs,栈内容:/home/user/docs dirs # 输出:/home/user/docs
常见命令对比与总结
以下表格总结了Linux中与“回到上一级目录”相关的命令及其用法:
| 命令 | 作用 | 示例与说明 | 
|---|---|---|
cd .. | 
回到上一级目录(父目录) | 当前路径/home/user/docs,执行后变为/home/user | 
cd ../.. | 
回到上两级目录 | 当前路径/home/user/docs/project,执行后变为/home/user | 
cd - | 
切换到上一个访问的目录 | 从/var/log到/tmp后,执行cd -返回/var/log | 
cd ~ | 
切换到当前用户主目录 | 执行后进入/home/当前用户(如/home/admin) | 
cd /path | 
通过绝对路径切换目录 | 当前路径/opt/app/logs,执行cd /opt直接切换到/opt | 
pushd/popd | 
管理目录栈,多目录切换 | pushd /a /b /c将目录压入栈,popd逐个弹出并切换 | 
相关问答FAQs
Q1: 为什么在根目录下执行cd ..后没有变化?
A: Linux的根目录是文件系统的最顶层,没有父目录,在Linux目录结构中,符号指向父目录,而根目录的父目录就是自身,因此执行cd ..后路径仍为,可通过pwd命令验证当前路径,或使用ls -la /查看根目录下的隐藏文件(会显示和均指向)。  
Q2: 如何快速回到最近访问的某个上级目录,而不是逐层cd ..?
A: 若需快速跳转到非连续的上级目录,可通过以下方法实现:  
- 使用绝对路径:通过
pwd查看当前完整路径,直接用cd /目标上级路径切换,当前在/opt/app/config/logs,需回到/opt,执行cd /opt即可。 - 结合
cd -和目录历史:若之前访问过目标上级目录,可通过cd -在最近两个目录间切换;或使用history | grep cd查看历史命令,找到目标路径后执行。 - 利用
pushd/popd管理目录栈:若需在多个上级目录间频繁切换,可先用pushd将目标目录压入栈,后续通过popd快速返回,适合复杂场景下的目录管理。 
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/25176.html