命令行与 Git

Chapter 0 About the Command Line

| 关于   «  Chapter 0 About the Command Line   ::   目录   ::   0.2. 练习题  »

0.1. 命令行

0.1.1. 简介

在计算机中,操作系统使用文件系统来管理用户存储和访问的文件。文件系统遵循层级树状结构,其中根目录位于树的顶部。所有其他目录和文件都从根目录分支出来。

下图展示了一个简单的文件结构。浅蓝色矩形代表文件,深蓝色矩形代表目录。命令行(command line)是一种文字用户界面,允许用户执行命令在文件结构中移动。 当前工作目录(current working directory) 是用户当前在命令行中所处的目录。 绿色 矩形代表当前工作目录。 父目录(parent directory) 是包含当前工作目录的目录。 子目录(subdirectory) 是位于当前工作目录之内的目录。一个父目录可以包含多个子目录。

以下文件系统存在四个层级:

  • 第 1 级)根目录(root)

  • 第 2 级)三个文件(bird.txt、snake.txt、fish.txt)和一个目录(mammals)。

  • 第 3 级)三个文件(monkey.txt、mouse.txt、bear.txt)和一个目录(dogs)。

  • 第 4 级)三个文件(beagle.txt、boxer.txt、poodle.txt)

Command Line Before

使用基本命令,用户可以执行各种操作来遍历文件结构。用户还可以创建、复制、移动和删除文件和目录,就像使用 Windows 的文件资源管理器或 Mac 的访达一样。这些基本命令在 Linux、Windows 和 Mac 的命令行中都很常见。

假设用户在文件结构与上图相同的命令行中执行以下命令,且当前工作目录是以绿色高亮显示的 mammals 目录。这些命令把目录向上移动一级,创建一个名为 "insects" 的新目录,然后列出当前工作目录(即根目录)中的所有文件和目录。

Command Line Commands

下图显示了执行上述命令后更新过的文件结构。当前工作目录现在是根目录,并且 "insects" 目录已被创建。

Command Line After

0.1.2. 路径

在文件系统中,路径(path)定义了某个文件或目录的位置。路径是由 "/" 字符分隔的目录名列表。目录名指定了要到达某个文件或目录必须遍历的目录。路径可以是绝对路径,也可以是相对路径。

绝对路径(absolute path)指定从根目录开始的某个文件或目录的位置。例如,在上面这个示例中,"dogs" 目录的绝对路径是 "/mammals/dogs"。此外,文件 "poodle.txt" 的绝对路径是 "/mammals/dogs/poodle.txt"。

相对路径(relative path)指定从当前工作目录开始的某个文件或目录的位置。例如,在上面这个示例中,假设当前工作目录是 "mammals",则 "dogs" 目录的相对路径就是 "dogs"。此外,文件 "poodle.txt" 的相对路径是 "dogs/poodle.txt"。

路径可以包含单个句点。"." 表示当前工作目录。例如,在上面这个示例中,假设当前工作目录是 "mammals",则 "dogs" 目录的相对路径也可以是 "./dogs"。

路径也可以包含双句点。".." 表示父目录。例如,在上面这个示例中,假设当前工作目录是 "mammals",则根目录的相对路径是 ".."。此外,在上面这个示例中,文件 "bird.txt" 的相对路径是 "../bird.txt"。

在本书的练习中,(directory_path) 指某个目录的路径,(file_path) 指某个文件的路径,(path) 指某个文件或目录的路径。

0.1.3. 练习说明

本书包含多个有助于你学习基本命令的练习。每个练习都包含一个简短的介绍和一个要完成的任务。你可以使用模拟命令行执行命令来完成练习。在执行命令的同时,你可以参考相应的可视化,以了解命令如何影响文件结构。请注意,当命令需要参数时,参数会用 (括号) 表示。例如,在下图中,cd (directory_path) 表示 cd 命令需要一个参数,该参数指定路径。例如,从根目录执行时,"cd mammals" 和 "cd mammals/dogs" 都是有效的 cd 命令。

下图展示了练习的示例。

例如:

Command Line Exercise

可通过以下方式解决:

Command Line Exercise

此外:

Command Line Exercise

可通过以下方式解决:

Command Line Exercise

完成练习时,请务必查阅以下关键术语和命令并加以参考。

0.1.4. 关键术语

文件(File): 文件用于存储数据。浅蓝色矩形代表文件。

目录(Directory): 目录用于存储文件和其他目录。深蓝色矩形代表目录。

文件系统(File System): 文件系统是一种存储所有文件和目录的层级树状数据结构。树状结构可视化代表文件系统。

命令行(Command Line): 命令行是一种文字界面,允许用户通过执行命令与文件系统交互。带有 "$" 的黑色输入框代表命令行,可供用户执行命令。

当前工作目录(Current Working Directory): 当前工作目录是用户当前在命令行中工作的目录。绿色矩形代表当前工作目录。

根目录(Root Directory): 根目录是文件系统层级中的顶级目录。树状结构顶部名为 "/" 的深蓝色矩形代表根目录。

路径(Path): 路径包含定义文件系统中某个位置的目录名。目录名之间用 "/" 字符分隔。例如,"/mammals/dogs/poodle.txt" 是一个路径,它定义了文件 "poodle.txt" 的位置,该文件位于 "dogs" 目录内,"dogs" 目录位于 "mammals" 目录内,而 "mammals" 目录位于根目录内。

绝对路径(Absolute Path): 绝对路径指定从根目录开始的某个文件或目录的位置。例如,"/mammals/dogs/poodle.txt" 就是一个绝对路径。

相对路径(Relative Path): 相对路径指定从当前工作目录开始的某个文件或目录的位置。例如,当当前工作目录是 "/mammals" 时,可以使用相对路径 "dogs/poodle.txt" 来定位 "poodle.txt"。

路径中的单个句点(Single Period in Path): 路径可以包含 "." 来表示当前工作目录。例如,当当前工作目录包含 "poodle.txt" 时,"./poodle.txt" 定义了 "poodle.txt" 的位置。

路径中的双句点(Double Periods in Path): 路径可以包含 ".." 来表示父目录。例如,".." 定义了当前工作目录的父目录的位置。此外,当当前工作目录的父目录包含 "fish.txt" 时,"../fish.txt" 定义了 "fish.txt" 的位置。

0.1.5. 命令

目前支持以下命令。参数用 (括号) 括起。可选标志用 [方括号] 括起。

pwd :打印当前工作目录的路径。

ls (directory_path) :如果未提供 (directory_path),则列出当前工作目录中的所有文件和目录。否则,列出 (directory_path) 指定位置处的目录中的所有文件和目录。

cd (directory_path) :将当前工作目录更改为 (directory_path) 指定位置处的目录。

touch (file_path) :创建名称和位置由 (file_path) 指定的新文件。提供多个以空格分隔的 (file_path) 值,可一次创建多个文件。

mkdir (directory_path) :创建名称和位置由 (directory_path) 指定的新目录。提供多个以空格分隔的 (directory_path) 值,可一次创建多个目录。

rm [-r] (path) :移除 (path) 指定位置处的文件或目录。提供多个以空格分隔的 (path) 值,可一次移除多个文件或目录。提供 [-r] 标志可移除目录。如果当前工作目录是该目录的子目录,则无法移除该目录。

rmdir (directory_path) :如果该目录为空,则移除 (directory_path) 指定位置处的目录。提供多个以空格分隔的 (directory_path) 值,可一次移除多个目录。

mv (src_path) (dst_path) :将文件或目录从 (src_path) 指定的位置移动到 (dst_path) 指定的文件或目录。提供多个以空格分隔的 (src_path) 值,可一次移动多个文件或目录。

cp [-r] (src_path) (dst_path) :将文件或目录从 (src_path) 指定的位置复制到 (dst_path) 指定的文件或目录。提供多个以空格分隔的 (src_path) 值,可一次复制多个文件或目录。提供 [-r] 标志可复制目录。

   «  Chapter 0 About the Command Line   ::   目录   ::   0.2. 练习题  »

关闭窗口