Linux目录切换命令cd使用说明

26次阅读

cd</code></code>命令是Linux中用于切换目录的核心命令,掌握其用法可实现高效文件系统导航。使用cd</code></code> [目录名]可切换到指定目录,支持相对路径(如cd</code></code> Documents</code>)和绝对路径(如cd</code></code> /var/log</code>);cd</code></code> ..可返回上一级目录,cd</code></code>或cd</code></code> ~快速回到用户主目录,cd</code></code> -则实现在最近两个目录间快速切换。进阶技巧包括设置CDPATH环境变量简化路径输入,但需注意同名目录可能导致误跳转;处理含空格目录需用引号或转义字符(如cd</code></code> "My Documents</code>");权限不足或符号链接解析也可能引发问题,需用cd</code></code> -P明确物理路径。在脚本中使用cd</code></code>时,建议通过子shell(如(cd</code></code> /tmp && command))隔离影响,结合|| exit 1进行错误处理,并可利用pushdpopd管理多目录堆栈,确保脚本执行的安全性与稳定性。</blockquote>

src="https://img.php.cn/upload/article/000/969/633/175713414790058.jpeg" alt="Linux目录切换命令cd</code></code>使用说明"></p>

cd</code></code></pre>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div> 命令,简单来说,就是你在 Linux 命令行里“移动”的指令,它能让你从一个目录切换到另一个目录。掌握它,你才能真正开始在文件系统中自由穿梭,不然就只能被困在原地,什么都做不了。对我而言,这玩意儿简直就是 Linux 命令行操作的基石,重要性不言而喻。</p>

在 Linux 系统中,

cd</code></code></pre>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>(change directory)命令是你日常操作的起点。你所有的文件操作,无论是创建、编辑还是删除,几乎都离不开先切换到目标目录。</p>

最基础的用法,当然是直接指定目标目录的路径。比如,你想进入一个叫

Documents</code></pre>

</div></div> 的文件夹,如果它就在你当前目录下,直接输入

cd</code></code> Documents</code></pre>

</div></div> 就行了。这种叫相对路径</strong>,顾名思义,是相对于你当前所在位置的路径。</p>

但如果你想去一个离得很远的目录,比如

/var/log</code></pre>

</div></div>,而你现在在

/home/user/Documents</code></pre>

</div></div>

</div></div>,那么输入

cd</code></code> /var/log</code></pre>

</div></div> 就会更直接。这便是绝对路径</strong>,它从文件系统的根目录

/</pre>

</div></div> 开始,无论你身在何处,都能准确无误地抵达。我个人觉得,刚开始用 Linux 的时候,多用绝对路径能帮你建立起对文件系统结构的认知,不容易迷路。</p>

还有一些特别的用法,比如

cd</code></code> ..</pre>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>,它能让你返回上一级目录。如果你在

/home/user/Documents</code></pre>

</div></div>

</div></div>,输入

cd</code></code> ..</pre>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div> 就会回到

/home/user</pre>

</div></div>。我经常会连续输入好几个

cd</code></code> ..</pre>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>,一路退回到根目录或者某个高层级目录,这种感觉就像在爬树,一层一层往上退。</p>

仅仅输入

cd</code></code></pre>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div> 不带任何参数,或者使用

cd</code></code> ~</pre>

</div></div>

</div></div>

</div></div>,都能让你直接回到你的用户主目录(通常是

/home/你的用户名</pre>

</div></div>

</div></div>)。这对我来说是救命稻草,尤其是在我一不小心“迷失”在某个深层目录,或者执行了一些可能改变当前目录的脚本之后,一个

cd</code></code></pre>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div> 就能把我带回熟悉的“老家”。</p>

最后,一个我特别喜欢,也觉得很多人可能忽略的用法是

cd</code></code> -</pre>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>。这个命令能让你快速切换到上一次所在的目录。想象一下,你在

/etc/nginx/sites-available</pre>

</div></div>

</div></div> 配置完一个网站,然后突然想起要去

/var/log</code>/nginx</pre>

</div></div> 看看日志,看完之后,一个

cd</code></code> -</pre>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div> 就能把你瞬间带回

/etc/nginx/sites-available</pre>

</div></div>

</div></div>。这种在两个目录之间来回跳跃的效率,真的能让你省下不少时间。</p>

如何快速返回上一级或主目录?</h3>

要快速返回上一级目录,最直接的办法就是使用

cd</code></code> ..</pre>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>。这个命令是我日常使用频率最高的之一,因为它能让你迅速脱离当前目录的深层结构。比如,你可能正在

/home/user/projects/my_app/src/components/button</pre>

</div></div> 这样的路径下工作,一个

cd</code></code> ..</pre>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div> 就能让你回到

components</pre>

</div></div> 目录,再一个

cd</code></code> ..</pre>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div> 就到了

src</pre>

</div></div>。这种层层递进或递退的操作,就像在文件系统里玩“跳房子”,效率很高。</p>

至于返回主目录,你有两种非常便捷的方式:一种是直接输入

cd</code></code></pre>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>,不带任何参数。另一种是使用

cd</code></code> ~</pre>

</div></div>

</div></div>

</div></div>。两者效果完全相同,都会把你带回

/home/你的用户名</pre>

</div></div>

</div></div>(或者

$HOME</pre>

</div></div> 环境变量</a>所指向的目录)。我个人更倾向于直接敲

cd</code></code></pre>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>,因为它更短,输入也更快。在写脚本时,

cd</code></code> ~</pre>

</div></div>

</div></div>

</div></div> 可能显得更明确一些,但对我个人而言,在交互式终端里,越简洁越好。</p>

还有一个值得一提的,虽然不是直接返回上一级或主目录,但却极其有用的

cd</code></code> -</pre>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>。这个命令的魔力在于它能让你在最近两个工作目录之间来回切换。设想一下,你正在

/var/www/html</pre>

</div></div>

</div></div> 调试网站文件,需要时不时去

/etc/nginx/sites-enabled</pre>

</div></div> 检查配置文件。你可以在

/var/www/html</pre>

</div></div>

</div></div> 输入

cd</code></code> /etc/nginx/sites-enabled</pre>

</div></div>,然后当你需要回到网站根目录时,直接输入

cd</code></code> -</pre>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div> 就能回去,再输入

cd</code></code> -</pre>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div> 又回到配置文件目录。这种操作模式,在需要频繁往返于两个特定目录时,效率远超反复输入完整路径。它就像一个“传送门”,把你瞬间送到上次去过的地方。</p>

cd</code></code>命令有哪些不为人知的技巧或陷阱?</h3>

cd</code></code></pre>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div> 命令看似简单,但它背后其实藏着一些小技巧和需要注意的陷阱。</p>

一个不那么为人所知但非常实用的技巧是利用

CDPATH</pre>

</div></div>

</div></div>

</div></div>

</div></div> 环境变量。想象一下,你有一些常用的项目目录,比如

/home/user/projects/frontend</pre>

</div></div> 和

/home/user/projects/backend</pre>

</div></div>。每次切换到它们都需要输入完整的路径。如果你将

CDPATH</pre>

</div></div>

</div></div>

</div></div>

</div></div> 设置为

export CDPATH=.:/home/user/projects</pre>

</div></div>,那么当你输入

cd</code></code> frontend</pre>

</div></div>

</div></div> 时,shell 不仅会在当前目录查找

frontend</pre>

</div></div>

</div></div>,还会去

/home/user/projects</pre>

</div></div> 下查找。这样,无论你当前在哪个目录,只要

frontend</pre>

</div></div>

</div></div> 在

CDPATH</pre>

</div></div>

</div></div>

</div></div>

</div></div> 指定的路径中,你就能直接

cd</code></code> frontend</pre>

</div></div>

</div></div> 过去。这在管理多个项目时,能大大减少路径输入的烦恼。但要注意,过度依赖

CDPATH</pre>

</div></div>

</div></div>

</div></div>

</div></div> 有时会让你的目录切换行为变得不那么直观,尤其是在有同名目录存在时,可能会切换到非预期的位置。</p>

至于陷阱,最常见的莫过于处理带有空格或特殊字符的目录名</strong>。如果你有一个目录叫

My Documents</code></pre>

</div></div>,直接输入

cd</code></code> My Documents</code></pre>

</div></div> 是行不通的,shell 会把它解析成两个参数。正确的做法是使用引号将其括起来,如

cd</code></code> "My Documents</code>"</pre>

</div></div>,或者对空格进行转义,如

cd</code></code> My Documents</code></pre>

</div></div>。我刚开始用 Linux 的时候,就经常因为这个小细节而感到困惑,浪费了不少时间。</p>

//php.xlycwl.com/ai/copymatic">src="https://img.php.cn/upload/ai_manual/001/246/273/68b6d22e6dead526.png" alt="Linux目录切换命令cd</code></code>使用说明"></a>

//php.xlycwl.com/ai/copymatic">Copymatic</a>

Cowriter是一款AI写作工具,可以通过为你生成内容来帮助你加快写作速度和激发写作灵感。</p>

src="https://php.xlycwl.com/static/images/card_xiazai.png" alt="Linux目录切换命令cd</code></code>使用说明">63</span> </div> </div> //php.xlycwl.com/ai/copymatic"> 查看详情</span> src="https://php.xlycwl.com/static/images/cardxiayige-3.png" alt="Linux目录切换命令cd</code></code>使用说明"></a> </div>

另一个陷阱是权限问题</strong>。如果你试图

cd</code></code></pre>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div> 到一个你没有读取或执行权限的目录,系统会拒绝你的请求,并显示“Permission denied”错误。这通常意味着你需要提升权限(比如使用

sudo</pre>

</div></div>),或者该目录根本就不应该被你访问。理解这一点很重要,因为这不仅仅是

cd</code></code></pre>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div> 命令的问题,更是 Linux 文件系统安全模型的核心。</p>

此外,符号链接(Symbolic Link)</strong>的行为有时也会让人感到困惑。当你

cd</code></code></pre>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div> 进入一个符号链接指向的目录时,你的当前工作目录(由

pwd</pre>

</div></div> 显示)会直接显示符号链接指向的实际路径,而不是符号链接本身的路径。但如果你使用

cd</code></code> -P</pre>

</div></div> 选项,它会解析所有符号链接,并显示物理路径。这个细节在某些需要严格区分物理路径和逻辑路径的场景下(比如备份脚本或特定工具</a>)会变得很重要。</p>

在脚本中如何安全有效地使用cd</code></code>命令?</h3>

在脚本中使用

cd</code></code></pre>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div> 命令,需要比在交互式终端中更加小心和谨慎,因为脚本的执行是自动化的,一旦出错,后果可能更严重。</p>

一个常见的挑战是

cd</code></code></pre>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div> 命令会改变脚本整个执行过程</strong>的当前工作目录。这意味着如果你的脚本中途

cd</code></code></pre>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div> 到了一个目录,后续所有的相对路径操作都会基于这个新目录。这在某些情况下是期望的,但在另一些情况下,可能会导致后续命令找不到文件或操作错误。</p>

为了安全地使用

cd</code></code></pre>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>

</div></div>,我个人有几个常用的策略:</p>

  1. 保存并恢复当前目录</strong>:在脚本开头,你可以用

    CURRENT_DIR=$(pwd)</pre>

    </div></div> 保存当前目录,在脚本执行完毕或者在需要恢复时,再用

    cd</code></code> "$CURRENT_DIR"</pre>

    </div></div> 返回。这种方法简单直接,但需要手动管理。</p></li>

  2. 使用子shell隔离

    cd</code></code></pre>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div> 影响</strong>:这是我最推荐的方法之一。你可以用括号

    ()</pre>

    </div></div> 将

    cd</code></code></pre>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div> 命令和它影响的命令包裹起来,形成一个子shell。子shell中的

    cd</code></code></pre>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div> 只会影响子shell内部的命令,当子shell执行完毕,父shell的当前工作目录不会改变。 例如:</p>

    echo "当前目录是:$(pwd)" ( cd</code></code> /tmp || exit 1 # 进入/tmp目录,如果失败则退出子shell echo "在子shell中,当前目录是:$(pwd)" # 这里可以执行其他需要/tmp目录的命令 ) echo "回到父shell,当前目录仍然是:$(pwd)"</pre>

    </div></div>

    这种方式非常优雅,能有效避免

    cd</code></code></pre>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div> 的“副作用”扩散到整个脚本。</p> </li>

  3. 结合错误检查</strong>:在脚本中,永远不要假设

    cd</code></code></pre>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div> 命令一定会成功。目标目录可能不存在,或者你没有权限进入。因此,我总是会在

    cd</code></code></pre>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div> 命令后面加上错误检查。最简单的方式是使用

    || exit 1</pre>

    </div></div>:</p>

    cd</code></code> /path/to/my/directory || { echo "错误:无法切换到 /path/to/my/directory,脚本退出。"; exit 1; }</pre>

    </div></div>

    这样,如果

    cd</code></code></pre>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div> 失败,脚本会立即退出,避免后续命令在错误的目录中执行,从而引发更严重的错误。</p> </li>

  4. 使用

    pushd</pre>

    </div></div>

    </div></div>

    </div></div> 和

    popd</pre>

    </div></div>

    </div></div>

    </div></div> 进行目录堆栈管理</strong>:对于更复杂的目录切换需求,

    pushd</pre>

    </div></div>

    </div></div>

    </div></div> 和

    popd</pre>

    </div></div>

    </div></div>

    </div></div> 是非常有用的命令。

    pushd</pre>

    </div></div>

    </div></div>

    </div></div> 会将当前目录压入一个堆栈,并切换到新目录;

    popd</pre>

    </div></div>

    </div></div>

    </div></div> 则会从堆栈中弹出最近的目录并切换过去。</p>

    echo "初始目录:$(pwd)" pushd /tmp > /dev/null # 进入/tmp,并将当前目录压栈,重定向输出避免打印堆栈 echo "进入/tmp后:$(pwd)" pushd /var/log</code> > /dev/null # 进入/var/log</code>,并将/tmp压栈 echo "进入/var/log</code>后:$(pwd)" popd > /dev/null # 返回/tmp echo "popd后:$(pwd)" popd > /dev/null # 返回初始目录 echo "再次popd后:$(pwd)"</pre>

    </div></div>

    这种方法特别适合需要在多个目录之间频繁切换,并且需要保持切换顺序的脚本。通过堆栈管理,你可以更灵活地控制目录的进出。</p> </li> </ol>

    总之,在脚本中使用

    cd</code></code></pre>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    </div></div>

    Copyright ©  SEO

     Theme by Puock