news 2026/10/1 7:34:56

Linux 目录导航实战:以 devops-exercises 的 Navigation 练习吃透 cd 与 pwd

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux 目录导航实战:以 devops-exercises 的 Navigation 练习吃透 cd 与 pwd
  • 文档
  • 教程
  • DevOps
  • 运维

【免费下载链接】devops-exercises

Linux, Jenkins, AWS, SRE, Prometheus, Docker, Python, Ansible, Git, Kubernetes, Terraform, OpenStack, SQL, NoSQL, Azure, GCP, DNS, Elastic, Network, Virtualization. DevOps Interview Questions

项目地址:https://gitcode.com/GitHub_Trending/de/devops-exercises
点击查看免费下载

本篇技术指南围绕当前开源仓库 devops-exercises 中 Navigation 练习 与其 参考答案 展开,系统讲解 Linux 中cd与pwd目录导航的核心命令与底层机制。读完本篇,你将掌握从/tmp出发、经由父目录逐级上溯回到根目录/、借助cd -快速往返上次访问目录的完整实战套路,并能理解$PWD与$OLDPWD环境变量在导航背后的工作原理,可直接用于日常终端操作与面试答题。

练习在仓库中的位置与设计意图

devops-exercises 仓库将 Linux 主题的实操题组织在 topics/linux 下,其中 "Basics" 基础练习共三题:Navigation(导航)、Create and Destroy(创建与删除)、Copy Time(复制与移动)。Navigation 作为第一题,专门聚焦两个命令:**cd(change directory,切换目录)**与pwd(print working directory,打印当前工作目录),两者是后续一切文件系统操作(创建、删除、复制、移动)的前提。

从 topics/linux/README.md 的练习索引可以看到,仓库为每个练习都配了独立的 Exercise 描述页与 Solution 答案页,Navigation 练习即由 exercise 页 和 solution 页 两个文件构成。这种"题目与答案分离"的结构,正是为了让学习者先独立思考、再对照校验。

练习目标:一段贯穿关键路径的导航旅程

原练习(exercise)提出了 6 个递进式目标,要求环境为任意 Linux 系统:

  1. 切换到/tmp目录
  2. 移动到父目录
  3. 切换到 home 目录
  4. 移动到父目录
  5. 再次移动到父目录
    1. 此时你在哪里?用一条命令验证
  6. 切换到上次访问的目录

这 6 步串联起了 Linux 文件系统中的几个标志性位置:临时目录/tmp、家目录~(即/home/<用户名>)、父目录..,以及目录树的顶端根目录/。每一步都有明确的意图:熟悉相对导航、理解"当前位置"的概念、并接触"目录历史"这一高级特性。

参考答案与逐步演练

参考答案 给出的命令序列如下:

cd /tmp cd .. cd ~ cd .. cd .. # root (/) pwd cd -

下面逐条拆解每条命令做了什么、为什么这么做,并给出每步之后预期处于的位置:

第 1 步:cd /tmp——用绝对路径直达临时目录

cd /tmp

/tmp是 Linux 文件系统层次标准(FHS)中存放临时文件的目录,它通常会随系统重启被自动清理(这一特性在 topics/linux/README.md 的 FHS 问答中有明确说明)。这里的路径以/开头,是绝对路径——无论当前身处何处,都会直接切换到根目录下的tmp。执行后,当前工作目录变为/tmp。

第 2 步:cd ..——进入父目录

cd ..

..是表示父目录(当前目录的上一级)的特殊条目。当前在/tmp,其父目录就是/(根目录)。因此执行后位于/。

第 3 步:cd ~——回到家目录

cd ~

~(波浪号)是 shell 对当前用户 home 目录的简写。对普通用户而言通常是/home/<用户名>,对 root 用户则是/root。这一步把当前目录从/切换到家目录,演示了家目录快捷方式的用法。

第 4、5 步:连续cd ..——逐级上溯直至根目录

cd .. cd ..

此时你在/home/<用户名>(假设用户名user)。第一次cd ..进入/home,第二次cd ..进入/——这就是练习第 5 步中"再次移动到父目录"的答案:最终停在根目录,即整棵目录树的最顶端,其父目录是它自身,无法再继续上溯。

验证步:pwd——确认当前位置

pwd

pwd是 Print Working Directory 的缩写,打印出当前所在目录的绝对路径。在连续两次cd ..之后,应该输出/,从而验证你确实到达了根目录。这也是练习目标 5.1 要求的"用一条命令验证"的标准答案。

第 6 步:cd -——回到上次访问的目录

cd -

cd -是"切换到最后访问过的目录"的快捷方式。由于上一步你位于/,且在此之前刚从家目录一路cd ..上溯而来,cd -会把目录切回本次会话中上一个所在目录。在原练习的语境下,即回到步骤 3 之前或执行pwd之前所停留的位置(具体取决于 shell 对OLDPWD的记录时机),并且 shell 会同时在终端上打印目标路径。这一命令在"在两目录之间来回切换"的场景(如反复比对两个项目目录)中极为实用。

深入原理:cd与pwd背后的机制

cd是 shell 内建命令

cd属于 shell 内建命令(builtin),而非独立的可执行程序——因为它必须修改当前 shell 进程自身的工作目录,而子进程无法改变父进程的目录状态。这也是为什么cd在 bash、zsh 等常见 shell 中行为一致、且无需额外安装。

两个关键环境变量:$PWD与$OLDPWD

cd的核心机制由两个 shell 环境变量驱动:

  • $PWD:记录当前工作目录的绝对路径。pwd命令打印的内容本质上就是它的值。
  • $OLDPWD:记录上一次工作目录的绝对路径。

仓库的问答题库中恰好收录了这一问题,见 topics/linux/README.md:

问:cd -是如何工作的?它怎么知道之前的位置?答:$OLDPWD

也就是说,每次成功执行cd时,shell 先把当前路径存入$OLDPWD,再把新路径写入$PWD;执行cd -时,shell 读取$OLDPWD并切换过去。理解了这一点,你甚至可以用cd $OLDPWD显式复现cd -的效果,或在脚本中通过$OLDPWD判断"上次从哪个目录进来"。

常用cd形态速查

在 topics/linux/README.md 的 Linux 101 问答中,仓库系统总结了cd的六种典型形态及含义,可直接作为面试速查表:

命令含义
cd /切换到根目录
cd ~切换到你的 home 目录
cd(无参数)切换到你的 home 目录
cd ..切换到当前目录的上一级(父目录)
cd .切换到当前所在目录(即原地不动)
cd -切换到最后访问过的路径

pwd与"当前位置"的感知

pwd是验证导航结果的首选工具。除了配合练习使用,日常排障中它还有两个高频变体:

  • pwd -L:打印逻辑路径(跟随符号链接的路径,默认行为);
  • pwd -P:打印物理路径(解析掉所有符号链接后的真实路径)。

当目录是通过符号链接进入时,两者输出可能不同,这也是定位"我到底在哪个真实目录"的常见手段。

结合文件系统层次:为什么练习刻意经过这几个目录

练习刻意安排的/tmp、~、/三个锚点,恰好对应 Linux 文件系统层次标准(FHS)中的典型目录,仓库在 FHS 问答 中给出了它们的职责:

  • /:文件系统的根,目录树的起点;
  • /tmp:存放临时文件的目录,通常重启后被自动清理;
  • /home:存放各用户 home 目录的位置(/home/<user>即某个用户的 home)。

理解了这些目录的语义,你就能预判"从某目录cd ..会到哪"——这正是导航练习想训练的核心能力:在脑中建立目录树的拓扑地图。

扩展技巧:超越单步cd的高效导航

在最近两个目录间快速往返

cd -解决了"两目录间往返"问题;若需要在更多历史目录间穿梭,可以使用:

pushd /path/to/dir # 压栈并切换 popd # 出栈并回到上一个压入的目录 dirs # 查看目录栈

pushd/popd与cd -一样依赖 shell 维护的目录历史,适合在多个项目目录之间频繁切换的日常工作流。

相对路径与绝对路径的选择

  • 绝对路径(以/开头):如cd /etc/nginx,与当前位置无关,适合脚本与明确跳转;
  • 相对路径(不以/开头):如cd ../..、cd dir1/dir2,依赖当前位置,适合在相邻目录间移动。

练习中的cd /tmp(绝对)与cd ..(相对)正好演示了两者的混合使用,这也是真实运维中最常见的组合方式。

如何在仓库环境中自主演练与验证

devops-exercises 不仅提供了静态的练习与答案,还配套了可交互的自测工具:

  • scripts/random_question.py 会解析仓库README.md中的问答对并随机抽题,通过-s/--skip参数可跳过无答案的题目,适合把 Linux 导航等知识做成刷题式训练;
  • scripts/question_utils.py 提供get_answered_questions、get_random_question等函数,可编程化抽取题目;
  • scripts/count_questions.sh 统计仓库中的题目与练习总数,便于了解覆盖范围。

建议的实操路径:先独立完成 练习题目,再对照 参考答案 逐条执行并配合pwd验证每个中间状态;随后使用echo $PWD、echo $OLDPWD观察两个环境变量的变化,亲手确认cd -的底层依据;最后用pushd/popd/dirs体验目录栈导航,并回到 Linux 101 问答 检验自己对六种cd形态的掌握程度。整条链路从命令执行到机制理解、再到自测巩固,正是这份仓库练习设计的完整闭环。

  • 文档
  • 教程
  • DevOps
  • 运维

【免费下载链接】devops-exercises

Linux, Jenkins, AWS, SRE, Prometheus, Docker, Python, Ansible, Git, Kubernetes, Terraform, OpenStack, SQL, NoSQL, Azure, GCP, DNS, Elastic, Network, Virtualization. DevOps Interview Questions

项目地址:https://gitcode.com/GitHub_Trending/de/devops-exercises
点击查看免费下载

相关推荐

上一篇:jsinspect:终极JavaScript代码重复检测工具完整指南
下一篇:Windows 10 上怎么运行 Android 应用?WSA-Windows-10 安装与使用全记录

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/1 7:34:41

多智能体系统落地架构实战:编排模式、通信机制与生产就绪指南

1. 多智能体系统落地架构的核心命题1.1 从单Agent到多Agent&#xff0c;到底在解决什么问题我做了两年多Agent开发&#xff0c;从最早用单Agent做客服问答&#xff0c;到后来带团队搭建多智能体协作平台&#xff0c;踩过的坑比写过的代码还多。先说一个最直观的感受&#xff1a…

作者头像 李华
网站建设 2026/10/1 7:34:25

AI时代的研发设计与智造落地沙龙落幕 I 易趋受邀出席发表主题演讲

为深入贯彻落实国务院关于制造业数字化转型的部署要求&#xff0c;加快推动深圳市工业企业数字化改造&#xff0c;2026年9月22日&#xff0c;由深圳市工信局制造业创新处联合e-works数字化企业网举办的“虚实共生软硬协同&#xff1a;AI时代的研发设计与智造落地对话沙龙”在深…

作者头像 李华
网站建设 2026/10/1 7:31:51

2026年9月北京GEO公司哪家懂桩基工程?

摘要&#xff1a;2026年9月&#xff0c;我们把桩基工程作为落地场景&#xff0c;对北京GEO服务商做适配梳理。做法分三步&#xff1a;还原桩基企业在AI端真实提出的问题&#xff0c;拆成七项可核对的要点&#xff0c;再逐家核对公开资料。全文按行业适配度整理&#xff0c;非第…

作者头像 李华
网站建设 2026/10/1 7:30:49

Mysql MCP Server@Mac+Cherry Studio部署与调试:把本地数据库接进AI工作流

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/1 7:30:29

SAP生产订单状态机核心:OIOA状态参数文件深度解析

1. 这个文件不是配置表&#xff0c;而是状态流转的“交通信号灯控制手册”你打开SAP事务码BS02&#xff0c;输入生产订单号&#xff0c;看到一堆状态码&#xff08;如REL、PCNF、TECO、DLV、GMPS……&#xff09;&#xff0c;它们像一串密码&#xff0c;但没人告诉你背后到底谁…

作者头像 李华