Linux/Unix 中的 cd 命令 | Linux 更改目录

2025年3月17日 | 阅读 7 分钟

Linux cd 命令用于更改当前工作目录(即当前用户正在工作的目录)。 "cd" 代表 'change directory'(更改目录)。它是 Linux 终端中最常用的命令之一。

语法

它是 Linux 系统中最重要和最常用的命令之一,会反复使用。借助此命令,我们可以遍历系统中的所有目录。我们可以进入上一个目录,或者在上一个目录和下一个目录之间切换,或者去任何地方。

cd 命令的实现

该命令在多种操作系统中实现,如 AmigaOS、MetaComCo TRIPOS、IBM OS/2、DOS、Unix、Linux、ReactOS 和 Microsoft Windows。它在 MS-DOS 的第二个版本及更高版本中可用。此外,DR DOS 6.0 包含 chdir 和 cd 命令的实现。该命令还存在于开源 MS-DOS 模拟器 DOSbox 和 EFI shell 中。在 HP MPE/iX 中,它被称为 chdir。该命令与 Stratus OpenVOS 的 change_current_dir 命令可比。

  • cd 命令通常包含并直接内置在命令行解释器中。
  • 几乎所有 Unix shell(Bash、Bourne shell、tcsh 等)、Windows 7+ 上的 Windows PowerShell、cmd.exe 以及 DOS/ Microsoft Windows 3.x-9x/ME 上的 COM 都存在这种情况。
  • 由 POSIX 定义的 chdir 命令是几乎所有操作系统中受系统调用影响最大的命令。
  • 在 Windows 上,命令行 shell 使用 Windows API 来修改当前工作目录。
  • 另一方面,在 Unix 系统上,cd 命令调用 POSIX C 函数 chdir。
  • 这意味着,如果运行该命令,不会为迁移到其他目录而创建新进程,就像 ls 等其他命令一样。

相反,shell 本身会运行此命令。这是因为当创建新进程时,子进程会继承父进程创建的目录。如果 cd 命令继承了父目录的进程,那么 cd 命令的目标将永远无法完成。

Windows PowerShell,Microsoft 的脚本语言和面向对象的命令行 shell,在 shell 进程中运行 cd 命令。然而,PowerShell 的所有 cmdlets(如 rm、ls 等)都在 shell 进程中执行,因为 PowerShell 基于 .NET Framework,并且与旧 shell 相比具有独特的架构。

cd 命令的用法

目录可以被定义为文件系统中用于存放文件的逻辑部分。目录也可以包含其他目录。cd 可用于切换到子目录、返回父目录、一直退回到根目录,或移动到指定目录。

  • DOS 为所有带盘符的驱动器管理一个隔离的工作目录,并具有当前工作驱动器的格式。
  • Cd 可用于修改另一个带盘符的驱动器或工作驱动器的工作目录。
  • 作为一个命令,单独输入盘符会修改工作驱动器;或者,可以使用带 /d 选项的 cd 命令一次性修改工作驱动器及其工作目录。
  • 现代 Windows 版本为了向后兼容,在 EXE 中模拟了这种行为。
  • 请记住,在不同的操作系统中,在终端不带参数运行 cd 命令会有不同的效果。
  • 例如,如果在 DOS、Windows 或 OS/2 中不带参数运行 cd,将显示当前工作目录。如果在 Unix 中不带参数运行 cd,用户将返回到主目录。

在批处理文件或脚本文件中运行 cd 命令在不同的操作系统中也有不同的效果。在 DOS 中,该命令的批处理文件可以直接修改调用者的当前目录。在 Unix 中,调用 cd 命令的脚本不会修改调用者的当前目录。这是因为在 Unix 中,脚本通常在一个子 shell 中运行。

cd 命令的选项

类 Unix、Unix

  • cd ~ 或 cd 单独使用会始终将用户带到主目录。
  • cd . 允许用户停留在当前所在的目录。
  • cd ~username 允许用户停留在 username 的主目录。
  • cd dir(不带 /)允许用户停留在子目录中。
  • cd .. 会将用户向上移动一个目录。
  • cd - 会将用户切换到旧目录。

ReactOS、Windows、OS/2、DOS

没有属性会显示当前目录的完整路径。

  • -p: 它会打印最终的目录堆栈,类似于 dirs。
  • -v: 在此选项中,条目按每行一个显示,前面有堆栈位置。
  • -n: 在此选项中,条目在占据屏幕边缘之前被覆盖。
  • cd\(仅限 Windows 和 DOS)用于返回到根目录。cd\subdir 命令总是会依次将用户带到根目录中的指定子目录,无论命令被授权时用户在哪里。

既然我们已经熟悉了 Linux 目录,那么我们将对目录执行以下 cd 操作:

  1. 从当前目录切换到新目录
  2. 使用绝对路径更改目录
  3. 使用相对路径更改目录
  4. 切换到主目录
  5. 切换到上一个目录
  6. 切换到父目录
  7. 切换到根目录
  8. 切换到另一个用户的主目录
  9. 切换到带有空格的目录
  10. 切换到多个子目录

1) 从当前目录切换到新目录

我们可以将目录从当前工作目录更改为指定目录。要显示当前工作目录,请执行以下命令:

要更改当前工作目录,请执行以下命令:

考虑下面的输出

CD Command

从上面的输出中,我们执行了 pwd 命令来显示当前工作目录,即“/home/sssit”。然后,我们执行了 'cd' 命令来更改当前目录,并将新目录的路径指定为“/home/sssit/Desktop”。正如我们在输出图像中看到的,我们已经进入了新目录 Desktop。因此,我们的当前工作目录已更改为 Desktop。

2) 使用绝对路径更改目录

要使用绝对路径更改目录,我们必须从根目录开始指定整个路径。请看下面的例子:

CD Command2

从上面的输出中,我们正在从 'cups' 目录更改到 'certs' 目录。因此,我们提供了从根目录 (/) 开始的完整路径“/run/cups/certs”。这被称为绝对路径

3) 使用相对路径更改目录

我们可以使用相对路径更改目录;相对路径是相对于当前目录的位置。请看下面的例子:


CD Command

从上面的输出中,我们正在使用相对路径更改目录。就像上面的例子一样,这里我们也从 'cups' 目录更改到了 'certs' 目录,但没有指定整个路径。这就是相对路径。

4) 切换到主目录

要从当前工作目录切换到主目录,请执行以下命令:

上面的命令会将我们带到主目录。请看下面的输出:

CD Command

正如我们从上面的输出中看到的,我们当时在 Downloads 目录,而 "cd ~" 命令将我们带回了主目录。

5) 切换到上一个目录

要从当前工作目录切换到上一个目录,请执行以下命令:

考虑下面的输出

CD Command

正如我们从上面的输出中看到的,我们当时在“/Downloads/akash”目录。通过执行“cd -”命令,我们的当前工作目录已更改为之前的目录,即“/Downloads”。

6) 切换到父目录

要从当前工作目录切换到父目录,请执行以下命令:

上面的命令会将我们带到当前工作目录的父目录。请看下面的输出:

CD Command

正如我们从上面的输出中看到的,'akash' 目录已更改为它的父目录 'Downloads'。

7) 切换到根目录

要从当前工作目录导航到整个系统的根目录,请执行以下命令:

考虑下面的输出

CD Command

从上面的输出中,当前工作目录已更改为系统的根目录。

8) 切换到另一个用户的主目录

我们可以通过执行以下命令从当前工作目录切换到用户的主目录:

考虑下面的输出

CD Command

从上面的输出中,我们将目录更改为用户 'javatpoint' 的主目录。

9) 切换到带有空格的目录

要更改名称中带有空格的目录,请将路径用引号(' ')括起来,或在其后使用反斜杠(\)字符。执行以下命令:

上面的命令将忽略目录名称中的空格。请看下面的输出:

CD Command

10) 切换到多个子目录

我们可以通过用正斜杠 (/) 分隔目录来切换到多个子目录,如下所示:

考虑下面的输出

CD Command