cd 命令是 *nix 系统中最基本的命令,它所做的事情是改变你当前所在的目录。本文详细介绍该命令,它所能完成的功能以及关于该命令内在的东西。

cd 命令:一个内置命令

BASH Shell 是大多 Linux 发行版的默认 shell,BASH 有一些自己的内置命令,cd 就是其中的一个。我将解释什么是内置命令,以及为什么 cd 是一个内置命令。首先,用 SHELL 环境变量确认你当前的 shell:

现在用 which 命令检查 cd 命令二进制文件所在的路径(如果存在的话):

结果什么都没有输出,这是因为系统中不存在 cd 命令的二进制文件。但是你仍然可以运行该命令,这是因为 cd 是 BASH 的内置命令。内置命令就是内建在 shell 里的命令,另一个内置命令 type 会给你显示 cd 命令是一个内置命令的信息:

如果你尝试获得任何内置命令的帮助文档,将不存在它们独立的帮助页:

对于这些内置命令,不会创建独立的进程来运行它们,因此他们运行效率较高。

为了得到所有的内置命令,你可以使用 help 命令(这里 help 本身也是一个内置命令):

为什么 cd 是内置命令

为了描述简单,我就不讨论更多的细节了,但是要理解这个问题的答案,还需要知道一点 Unix 进程相关的知识。

BASH 创建的任何进程,它会由一个 BASH 的子 shell(当前 BASH 进程的子进程)来执行该进程,新建的进程运行实例、输出(如果需要的话),当该进程结束时,改子 shell 的任何属性都不会返回给父 shell。注意到的是,cd 命令用来改变 shell 当前所在的路径,如果 cd 是一个外部命令,它将改变子 shell 的当前路径,当运行完返回时,他所做的改变对父 shell 没有关系。因此,shell 的当前路径还是没有改变!所有改变当前 shell 环境的命令,在实现上都必须实现成内置命令。如果实现成外部命令,我们将不会得到预期的结果。

下面我们探索 cd 命令的用法:

cd 命令用法

如果你直接输入 cd 命令而不带任何参数,它将切换到你的 home 目录下,不管你当前所在的目录是什么:

波浪线(~)符号也代表 home 目录,你也可以使用它来切换到 home 目录下:

如果你是 root 用户,你可以切换到任何用户的 home 目录,使用波浪线后跟用户名。在一些 Linux 发行版中,没有特权的用户默认没有权限切换到其它用户的 home 目录:

点(.)代表当前目录,两个点(..)代表父目录,要想切换到父目录,只需要使用..:

只使用 . 大多情况下将不会将会你当前的目录,例如:

但是如果你当前目录重命名为其它名字,那么使用 . 将会改变当前目录:

在 BASH 以及大多数其它 shell 中,你可以提供两种类型的路径表示方式:绝对路径和相对路径。绝对路径使用 / 开始,和你当前所在目录无关;另一个相对路径不是以 / 开始,依赖于你当前所在的目录。

使用绝对路径改变当前目录:

使用相对路径改变当前目录:

可以使用 cd - 命令,回到上一次工作的目录,实现在两个目录间来回切换:

上次工作的目录保存在变量 OLDPWD 中,如果你试着在新的终端下使用该命令,它会显示下面的错误:

你还可以在 cd 命令中使用一些 bash 的技巧,例如使用通配符“?”、“*” 等。


编译自http://linoxide.com/linux-command/linux-cd-command-examples/

例解 Linux cd 命令的更多相关文章

  1. Linux命令详解之–cd命令

    cd命令是linux实际使用当中另一个非常重要的命令,本文就为大家介绍下Linux中cd命令的用法. 更多Linux命令详情请看:Linux命令速查手册 Linux cd命令用于切换当前工作目录至 d ...

  2. (转)linux traceroute命令参数及用法详解--linux跟踪路由命令

    linux traceroute命令参数及用法详解--linux跟踪路由命令 原文:http://blog.csdn.net/liyuan_669/article/details/25362505 通 ...

  3. 解Linux SSH命令大全,新手必看SSH命令

    下面介绍一些基本的常用的Linux SSH命令,都是一些很简单的Linux SSH命令,新手掌握了这几个,一般管理一般的vps或者linux主机就可以了!     我们的教程介绍了putty的使用方法 ...

  4. Linux cd命令(4)

    可以说在Linux上的一切操作都是从 cd 命令开始的.cd 是change directory的简写,其作用就是更改当前工作目录. 使用cd 对于这个命令的使用,不用多说了.需要注意的两点就是: c ...

  5. (转)详解Linux Top 命令

    top 命令是最流行的性能监视工具之一,我们必需了解.它是一个优秀的交互式工具,用于监视性能.它提供系统整体性能,但报告进程信息才是 top 命令的长处.top 命令交互界面如下图所视:

  6. 新手指南:详解Linux Top 命令

    Linux top命令简介 top 命令是最流行的性能监视工具之一,我们必需了解.它是一个优秀的交互式工具,用于监视性能.它提供系统整体性能,但报告进程信息才是 top 命令的长处.top 命令交互界 ...

  7. Linux cd命令 pwd命令

    1.cd命令 cd:及Change Directory改变目录的意思,用于更改到指定的目录 用法:cd [目录] 其中 "."代表当前目录,".."代表当前目录 ...

  8. 详解Linux Top 命令

    Linux top命令简介 top 命令是最流行的性能监视工具之一,我们必需了解.它是一个优秀的交互式工具,用于监视性能.它提供系统整体性能,但报告进程信息才是 top 命令的长处.top 命令交互界 ...

  9. 例解 Linux 下 Make 命令

    Linux 下 make 命令是系统管理员和程序员用的最频繁的命令之一.管理员用它通过命令行来编译和安装很多开源的工具,程序员用它来管理他们大型复杂的项目编译问题.本文我们将用一些实例来讨论 make ...

随机推荐

  1. ASP.NET MVC5+EF6+EasyUI 后台管理系统(33)-MVC 表单验证

    系列目录 注:本节阅读需要有MVC 自定义验证的基础,否则比较吃力 一直以来表单的验证都是不可或缺的,微软的东西还是做得比较人性化的,从webform到MVC,都做到了双向验证 单单的用js实现的前端 ...

  2. .NET Core采用的全新配置系统[5]: 聊聊默认支持的各种配置源[内存变量,环境变量和命令行参数]

    较之传统通过App.config和Web.config这两个XML文件承载的配置系统,.NET Core采用的这个全新的配置模型的最大一个优势就是针对多种不同配置源的支持.我们可以将内存变量.命令行参 ...

  3. ASP.NET Core管道深度剖析(4):管道是如何建立起来的?

    在<管道是如何处理HTTP请求的?>中,我们对ASP.NET Core的请求处理管道的构成以及它对请求的处理流程进行了详细介绍,接下来我们需要了解的是这样一个管道是如何被构建起来的.这样一 ...

  4. 【Data Cluster】真机环境下MySQL数据库集群搭建

    真机环境下MySQL-Cluster搭建文档  摘要:本年伊始阶段,由于实验室对不同数据库性能测试需求,才出现MySQL集群搭建.购置主机,交换机,双绞线等一系列准备工作就绪,也就开始集群搭建.起初笔 ...

  5. redis命令1

    SADD numbers 1 3 5 创建一个名为numbers的intset SADD fruites "apple" "peach" 创建一个hashtab ...

  6. android官方下拉刷新控件SwipeRefreshLayout的使用

    可能开发安卓的人大多数都用过很多下拉刷新的开源组件,但是今天用了官方v4支持包的SwipeRefreshLayout觉得效果也蛮不错的,特拿出来分享. 简介:SwipeRefreshLayout组件只 ...

  7. Node基础篇(文件操作)

    文件操作 相关模块 Node内核提供了很多与文件操作相关的模块,每个模块都提供了一些最基本的操作API,在NPM中也有社区提供的功能包 fs: 基础的文件操作 API path: 提供和路径相关的操作 ...

  8. react入门(3)

    在第一篇文章里我们介绍了jsx.组件.css写法  点击查看react入门(1) 第二篇文章里我们介绍了事件.this.props.children.props....other.map循环  点击查 ...

  9. Autofac 的属性注入,IOC的坑

    Autofac 是一款优秀的IOC的开源工具,完美的适配.Net特性,但是有时候我们想通过属性注入的方式来获取我们注入的对象,对不起,有时候你还真是获取不到,这因为什么呢? 1.你对Autofac 不 ...

  10. Basic Tutorials of Redis(8) -Transaction

    Data play an important part in our project,how can we ensure correctness of the data and prevent the ...