Linux命令行入门

来自菜鸟教程
(重定向自Linux命令行入门
跳转至:导航、​搜索

介绍

今天,我们中的许多人都熟悉具有图形用户界面(也称为 GUI)的计算机(台式机和笔记本电脑)、智能手机和平板电脑,使我们能够浏览应用程序、网络和文件(如文档和照片)通过视觉体验。 Windows、macOS 和 Linux 操作系统各自提供各种桌面环境(例如,带有文件夹和文件的图像)和下拉菜单,所有这些都提供对计算机程序、应用程序和我们自己的媒体的访问。

尽管 GUI 可以成为许多用户使用计算机的一种直观方式,但它们通常不能为我们提供对计算机的最大控制权,并且它们可能会阻止我们对计算机进行完全管理访问,包括安装、修改或删除软件或文件。 此外,由于 GUI 在很大程度上是可视的,因此它们通常不像所有用户都可以访问。

在没有 GUI 的情况下导航您自己的个人计算机和远程云服务器的一种方法是通过基于文本的终端或命令行界面 (CLI)。 您可以通过单击下面的蓝色 Launch an Interactive Terminal! 按钮在浏览器中启动一个:

启动交互式终端!

终端接口几乎存在于每个计算机操作系统上,终端仿真器也可用作平板电脑和智能手机的应用程序。 终端通过增加管理员访问权限、增强自定义环境的能力以及自动化流程的机会,为用户提供对其机器的更大整体访问权限。 它们还为用户提供访问远程计算机的能力,例如云服务器。

本教程将为刚接触终端环境的用户提供通过浏览器中的嵌入式 Web 终端使用命令行界面的基础知识,您可以在下面启动该终端环境。 如果您已经对终端有所了解,您可能更愿意阅读我们的 Linux 终端简介 教程。 完成本教程后,您应该了解如何在 Linux(或 macOS)计算机或服务器上使用终端。

了解终端窗口

当您第一次使用新计算机或智能手机时,您可能希望打开它并通过检查可用的应用程序来了解如何使用它,并了解它们的位置,以便您可以自定义设备以适应您的需求。 您可以通过类似的方式通过终端熟悉计算机。

您在此浏览器窗口中启动的交互式终端,通过单击上面的 Launch an Interactive Terminal! 按钮,在浏览器窗口底部显示一个白色矩形:

如果您尚未启动终端,请立即使用本教程开头的按钮启动终端。

在您的交互式浏览器终端中,应该有一个美元符号 $ 和一个闪烁的光标。 这是您将开始键入命令以告诉终端要做什么的地方。

您启动的终端是 Ubuntu 20.04 终端。 Ubuntu 是一个流行的 Linux 发行版,最初基于 Unix 操作系统。 macOS 操作系统也是基于 Unix 的。 如果您在 Linux 或 macOS 机器上阅读本教程,您的操作系统上应该有一个终端,其工作方式与我们将在本指南中使用的嵌入式终端类似。

在许多这些 Unix(或基于 *nix)的操作系统中,提示符末尾的符号可能是 $ 符号或 # 符号,其含义如下:

  • $ 或美元符号——您以普通用户身份登录
  • # 或井号/井号 - 您以具有提升权限的用户身份登录

# 环境中记录的用户也称为 root 用户,默认情况下被认为是超级用户或管理员。

对于我们在下面的浏览器终端中的目的,您以普通用户身份登录,但您还通过 sudo 命令拥有管理员权限。 由于这是一个临时终端,您无需担心您在终端中输入的内容,因为一旦完成,我们将销毁所有内容。 同样,使用云服务器,如果出现问题,可以销毁服务器并重新开始。

请注意,在本地计算机的终端上工作时最好更加小心,因为您作为管理员可以在终端上进行的更改可能会对您正在使用的计算机进行永久性更改。


此时,在浏览器中启动终端后,您可以开始使用本地计算机在其中输入内容。 您的文本将出现在闪烁的光标处。 我们将在接下来的部分中了解我们可以在此处输入的内容。

熟悉目录

我们将通过键入命令开始使用终端。 command 是用户给出的指令,传达用户希望计算机执行的操作。 您将在终端中输入命令,然后在您准备好让计算机执行给定命令时按 ENTERRETURN

让我们键入以下命令,然后键入 ENTER。 您还可以复制该命令,或者通过单击下面代码块中的相关链接,当您将鼠标悬停在它上面时,要求它在启动的交互式终端中运行。

pwd

运行此命令后,您将收到以下输出:

Output/home/sammy

pwd 命令代表“present working directory”,它让您知道您在当前文件系统中的位置。

在此示例中,您位于名为 /home/sammy 的目录(或文件夹)中,它代表名为 sammy 的用户。 如果您以具有提升权限的用户 root 身份登录,则该目录将称为 /root。 在个人计算机上,此目录可以称为拥有该计算机的用户的名称。 Sammy Shark 的计算机可能有 /sammy/sammy-shark/home/sammy 作为他们的主要用户目录。

现在,这个目录是空的。 让我们创建一个目录来存储我们将在本教程中创建的文件,例如,我们可以将其称为 files

为此,我们将使用 mkdir 命令,它代表“make directory”。 键入命令后,我们需要写入文件夹的名称,这会将值传递给命令,以便命令可以在创建此目录时执行。 该值(文件夹的名称)称为 参数 ,它是给命令的输入。 如果您熟悉自然语言语法,则可以将参数视为命令动词所作用的对象。

为了创建一个名为 files 的新目录,我们将编写以下内容,其中 mkdir 是命令, files 是参数:

mkdir files

运行此命令后,除了带有闪烁光标的新行之外,您不会收到任何输出。 使用终端上的这一新行,您就可以执行下一个命令了。

列出内容并了解权限

由于我们还没有收到关于我们的新目录的任何具体反馈,我们将使用一个命令来了解更多关于我们当前工作目录中的内容。 您可以通过列出目录中的文件来确认新目录确实存在,使用 ls 命令(表示“list”):

ls

您将收到确认 files 目录存在的输出:

Outputfiles

这为我们提供了有关当前工作目录中内容的一般信息。 如果我们想了解更多细节,我们可以使用所谓的标志运行 ls 命令。 在 Linux 命令中,flag 由连字符 - 和字母组成,向命令传递附加选项(和更多参数)。 在我们的示例中,我们将添加 -l 标志,当与 ls 配对时 - 表示我们希望在命令中使用该选项以使用长列表格式。

让我们输入这个命令和标志,如下所示:

ls -l

按下 ENTER 后,我们将在终端中收到以下输出:

Outputtotal 4
drwxr-xr-x 2 sammy sammy 4096 Nov 13 18:06 files

这里有两行输出。 第一行是指分配给该目录的计算机内存块,第二行主要是指用户对该文件的权限。

为了获得更易于阅读的输出,我们还可以传递 -h--human-readable 标志,它将以人类可读的格式打印内存大小,如下所示。 一般情况下,一个连字符-指的是单字母选项,两个连字符--指的是用文字写出的选项。 请注意,某些选项可以同时使用这两种格式。 我们可以通过将标志链接在一起来将多个选项构建到一个命令中,例如 -lh

例如,下面的两个命令提供相同的结果,即使它们的编写方式不同:

ls -lh
ls -l --human-readable

这两个命令都将返回以下输出,类似于上面的输出,但具有更大的内存块上下文:

Outputtotal 4.0K
drwxr-xr-x 2 sammy sammy 4.0K Nov 13 18:06 files

第一行输出让我们知道 4K 的计算机内存专用于该文件夹。 第二行输出有更多细节,我们将更详细地介绍。 我们将涵盖的所有信息的一般高级参考如下表所示。

文件类型 权限 链接数 所有者 团体 文件大小 上次修改日期 文件名
d rwxr-xr-x 2 萨米 萨米 4.0K 11月13日 18:06 文件

您会注意到我们的目录名称 files 位于输出的第二行末尾。 此名称指示 /home/sammy 用户目录中的哪个特定项目由输出行描述。 如果目录中有另一个文件,我们将有另一行输出,其中包含该文件的详细信息。

在该行的前面,有一个字符列表和破折号。 让我们分解每个字符的含义:

特点 描述
d dictory(或文件夹)— 一种可以保存其他文件的文件,对组织文件系统很有用; 如果这是 - 而不是,这将引用非目录文件
r read — 打开和读取文件的权限,或列出目录的内容
w write — 修改文件内容的权限; 并添加、删除、重命名目录中的文件
x execute — 允许运行作为程序的文件,或进入和访问目录中的文件

在字符串的第一个drwx字符中,第一个字母d表示项files是一个目录。 如果这是一个不是目录的文件,则此字符串将以连字符开头,如 -rwx,其中第一个连字符表示非目录文件。 以下三个字母,rwx,代表目录filesowner的权限,表示目录files可以是 read、written 和 ex 由文件所有者执行。 如果这些字符中的任何一个被连字符替换,则意味着所有者没有该字符所代表的权限类型。 稍后我们将讨论如何识别文件的所有者。

输出中接下来的三个字符是r-x,代表files目录的权限。 在这种情况下,该组具有读取和执行权限,但没有写入权限,因为 w 被替换为 -。 我们稍后将讨论如何识别该组。

第一个字符串的最后三个字符 r-x 表示任何其他组有权访问该计算机的权限。 在这种情况下,这些用户组也可以读取和执行,但不能写入。

输出中的数字 2 是指指向此文件的链接数。 在 Linux 中,links 提供了一种创建快捷方式来帮助用户浏览文件系统的方法。 当你创建这个文件时,Linux 做了一些后台工作来创建文件的绝对链接,以及文件的自引用链接,以允许用户沿着相对路径导航。 我们将在下一节讨论绝对路径和相对路径。

在数字 2 之后,字 sammy 显示两次。 这部分输出提供了有关与 files 目录关联的所有者和组的信息。 此行中的第一个sammy实例是指目录的所有者,我们前面看到的权限是rwxsammy 用户是所有者,因为我们将 files 目录创建为 sammy 用户并且是文件的当前所有者。 尽管 sammy 用户是我们当前环境中的唯一用户,但类 Unix 操作系统通常有多个用户,因此了解哪个用户拥有文件的所有权很有用。

sammy的第二个实例是指可以访问files目录的组,我们前面看到的权限是r-x。 在这种情况下,组名与所有者用户名 sammy 相同。 在实际环境中,操作系统上可能有其他组有权访问该目录,例如 staff 或类似 admin 的用户名。

此输出行的其余详细信息是机器上目录的内存分配的4.0K,以及最后修改目录的日期(到目前为止,我们刚刚创建了它)。

通过对文件系统和权限有了更深入的了解,我们可以继续在 Linux 终端上导航文件系统。

浏览文件系统

到目前为止,我们已经学习了如何确定我们在文件系统中的位置、如何创建新目录、如何列出文件以及如何确定权限。

接下来让我们学习如何在文件系统中移动。 我们创建了一个新目录,但我们仍在主 /home/sammy 用户目录中。 为了移动到我们创建的 /home/sammy/files 目录,我们将使用 cd 命令并传递我们想要移动到的目录的名称作为参数。 命令 cd 代表“change directory”,我们将这样构造它:

cd files

同样,除了带有闪烁光标的新行之外,您不会收到输出,但我们可以使用我们之前使用的 pwd 命令检查我们是否在 /home/sammy/files 目录中:

pwd

您将获得以下输出,确认您所在的位置:

Output/home/sammy/files

这将验证您位于 /home/sammy 用户目录的 /home/sammy/files 目录中。 这个语法对你来说是不是很熟悉? 它可能会提醒您带有正斜杠的网站 URL,而且实际上,网站也是在目录中的服务器上构建的。

让我们移动到服务器的主目录。 无论我们在文件系统中的哪个位置,我们始终可以使用命令 cd / 移动到主目录:

cd /

为了确认我们已经移动并了解此目录中的内容,让我们运行我们的 list 命令:

ls 

我们将收到以下输出:

Outputbin  boot  dev  etc  home  lib  lib32  lib64  libx32  media  mnt  opt  proc  root  run  s  sbin  srv  sys  tmp  usr  var

里面有很多文件! /目录是Linux服务器的主目录,称为“根”目录。 请注意,根目录与默认的“root”用户不同。 您可以将 / 目录视为 Linux 机器的大动脉,因为它包含运行计算机所需的所有文件夹。 例如,sys 目录保存着 Linux 内核和系统信息的虚拟文件系统。 如果您想了解有关每个目录的更多信息,可以访问 Linux 基金会文档

您还会注意到我们已经进入了一个目录,即 /home 用户文件夹。 从 / 目录中,我们可以将目录改回 /home 然后再改回 files,或者我们可以通过输入绝对路径直接移回该文件夹 [X187X ]:

cd /home/sammy/files

现在,如果您运行 pwd,您将收到 /home/sammy/files 作为输出。

文件路径 表示文件或目录在您的计算机或服务器上的位置。 您可以以相对或绝对方式调用文件或目录的路径。 相对路径 将是当我们移动到相对于当前工作目录的位置时,就像我们已经在 /home/sammy/ 中然后移动到 files/ 时所做的那样。 绝对路径 是当我们调用直接线路到某个位置时,就像我们在上面对 /home/sammy/files 所做的那样,表明我们从 / 目录开始,称为 [X168X ] 用户目录,然后是嵌套的 files/ 目录。

此外,Linux 利用 点符号 来帮助用户通过相对路径导航。 单 . 代表您当前所在的目录,双 .. 代表父目录。 因此,从我们当前所在的位置 (/home/sammy/files),我们可以使用两个点返回父级 /home/sammy 用户目录,如下所示:

cd ..

如果您运行 pwd,您将收到 /home/sammy 作为您的输出,如果您运行 ls,您将收到 files 作为您的输出。

另一个需要熟悉的重要符号是 ~,它代表您机器的主目录。 在这里,对于 sammy 用户,我们的主目录称为 /home/sammy,但在本地计算机上,它可能是您自己的名称,如 sammy-shark/

您可以在计算机上的任何位置键入以下内容并返回此主目录:

cd ~

此时,请随意使用您目前所学的命令在您的文件系统中导航。 在下一节中,我们将开始使用文本文件。

创建和修改文本文件

现在我们已经对 Linux 文件系统有了基础以及如何绕过它,让我们开始创建新文件并了解如何在命令行上操作文本。

让我们首先确保我们在 /home/sammy 用户文件夹的 files/ 目录中,我们可以通过使用 pwd 进行验证,或者通过更改绝对小路:

cd /home/sammy/files

现在,我们将创建一个新的文本文件。 我们将制作一个 .txt 文件,这是一个可以跨操作系统读取的标准文件。 与 .doc 文件不同,.txt 文件由 无格式 文本组成。 无格式文本,包括 .txt 文件中的文本,可以很容易地在命令行上使用,因此可以在以编程方式处理文本数据时使用(例如,自动化文本分析,从文本中提取信息,和更多)。

我们将从使用 touch 命令开始,该命令可以创建新文件或修改现有文件。 要使用它,您可以使用命令 touch 并将要创建的文本文件的名称作为参数传递,如下所示。

touch ocean.txt

按下 ENTER 后,您将收到新的命令提示行,您可以列出 files/ 的当前内容以确保它已创建。

ls
Outputocean.txt

到目前为止,我们已经创建了一个 ocean.txt 文件,该文件在创建时不包含任何文本。

如果我们想创建一个用文本初始化的文本文件,我们可以使用 echo 命令,该命令用于在 Linux 中显示文本字符串。

我们可以直接在命令行中使用 echo 让界面在我们之后重复。 传统的第一个程序 "Hello, World!" 可以用 echo 编写,如下所示:

echo Hello, World!
OutputHello, World!

以 Ovid 的 Metamorphosis 的回声命名,echo 命令返回我们请求的内容。 在这种情况下,它会回响:“你好,世界!” 然而,就其本身而言,echo 命令不允许我们将文本的值存储到文本文件中。 为此,我们需要输入以下内容:

echo "Sammy the Shark" > sammy.txt

上面的命令使用 echo,然后是我们想添加到文件中的文本,然后是重定向运算符 >,最后是我们的新文本文件的名称,[ X180X]。

我们可以再次使用 ls 检查我们的新文件是否存在。

ls
Outputocean.txt  sammy.txt

现在我们的 /home/sammy/files 用户文件夹中有两个文本文件。 接下来,我们可以确认文件 sammy.txt 确实包含我们要求终端回显到其中的文本。 我们可以使用 cat 命令来做到这一点。 concatenate 的缩写,cat 命令对于处理文件非常有用。 它的功能之一是显示文件的内容。

cat sammy.txt

运行命令后,我们将收到以下输出:

OutputSammy the Shark

如果我们在空文件 ocean.txt 上运行 cat,我们将不会收到任何回报,因为该文件中没有文本。 我们也可以使用 echo 向这个现有文件添加文本。 让我们将 Zora Neale Hurston 的一句话添加到文件中。

echo "Some people could look at a mud puddle and see an ocean with ships." > ocean.txt

现在,如果我们在文件上运行 cat,我们将收到刚刚输入的文本的输出。

cat ocean.txt
OutputSome people could look at a mud puddle and see an ocean with ships. 

到目前为止,我们已经创建了文本文件并向这些文件添加了文本,但我们还没有修改这些文件。 如果我们想这样做,我们可以使用命令行文本编辑器。 存在几种流行的选择,包括 Vim 和 Emacs。 出于我们的目的,我们将使用 nano,这是一个不太复杂的 CLI 文本编辑器程序,我们可以使用它来开始我们的探索。

可以使用 nano 命令调用 nano 文本编辑器。 如果我们想编辑现有的 sammy.txt 文件,我们可以通过将文件名作为参数传递来实现。

nano sammy.txt

该文件将在您的终端上打开:

sammy.txt

Sammy the Shark

使用键盘的箭头键,将光标移动到行尾,然后从 Sammy 的角度开始键入几行。

注意:在命令行上,您不能使用鼠标或其他指针进行导航,无论是通过文件系统还是在文件内。 您需要使用键盘,尤其是箭头键来移动文本文件。


完成文件后,它可能会显示如下内容:

sammy.txt

Sammy the Shark

Hello, I am Sammy.
I am studying computer science.
Nice to meet you!

您的文件现在包含您想要的文本,我们现在可以保存并关闭文件。 您可能会注意到终端窗口底部有一些指导:

^G Get Help   ^O WriteOut   ^R Read File  ^Y Prev Page  ^K Cut Text   ^C Cur Pos
^X Exit       ^J Justify    ^W Where Is   ^V Next Page  ^U UnCut Text ^T To Spell

因为我们目前已经完成了对这个文件的处理,我们想要Exit这个文件。 这里,^ 符号是指键盘上的 ControlCTRL 键,上面的输出告诉我们需要将该键与 [X158X ](使用此小写字母,无需按 SHIFT 键)以离开文件。 让我们同时按下这两个键:

CTRL x

以上内容在技术文档中通常被内联写为 CTRL + XCtrl+x

此时,您将收到以下提示:

OutputSave modified buffer?                          
 Y Yes
 N No           ^C Cancel

为了保存它,我们将按字母 y 表示是:

y

您将收到如下反馈。

OutputFile Name to Write: sammy.txt

还有其他选项,包括使用 CTRL + C 取消,但如果您对关闭文件感到满意,您可以此时按 ENTER 保存文件并退出。

假设我们要制作一些 DigitalOcean University 学生的档案。 让我们在 files/ 中创建一个名为 students 的新目录:

mkdir students

接下来,让我们将 sammy.txt 移动到新的 students/ 目录中。 代表 move 的 mv 命令将允许我们更改文件的位置。 该命令是通过将我们要移动的文件作为第一个参数,将新位置作为第二个参数来构造的。 以下两次执行都将产生相同的结果。

mv sammy.txt students
mv sammy.txt students/sammy.txt

如果我们想更改文件名,后一个选项会很有用,例如 mv sammy.txt students/sammy-the-shark.txt

现在,如果我们运行 ls 命令,我们将看到只有 ocean.txtstudents/ 目录在我们的当前目录(files/)中。 让我们进入 students/ 文件夹。

cd students

为了给其他同学提供一个模板,我们可以复制sammy.txt文件来创建更多的文件。 为此,我们可以使用 cp 命令,它代表 copy。 此命令的工作方式类似于 mv 命令,将原始文件作为第一个参数,将新文件作为第二个参数。 我们将为叶海龙亚历克斯制作一个文件:

cp sammy.txt alex.txt

现在,我们可以打开 alex.txt 并检查它。

nano alex.txt

到目前为止,alex.txt 看起来与 sammy.txt 相同。 通过替换一些单词,我们可以将这个文件修改为如下所示。 请注意,您可以使用 CTRL + K 删除整行。

亚历克斯.txt

Alex the Leafy Seadragon

Hello, I am Alex.
I am studying oceanography.
Nice to meet you!

您可以通过按 CTRL + X 然后按 y 然后按 ENTER 来保存和关闭文件。

如果您想对文本文件进行更多练习,请考虑为 Jamie the Mantis Shrimp、Jesse the Octopus、Drew the Squid 或 Taylor the Yellowfin Tuna 创建文件。

一旦您对创建、编辑、复制和移动文本文件感到满意,我们就可以进入下一部分。

自动完成和历史

许多版本的命令行,包括本教程中嵌入的交互式终端,都允许您自动完成并在执行过程中重用命令。 这可以帮助您更快地移动,因为它可以节省您的打字时间。

尝试键入 cat 以及您正在处理的一个文本文件的前几个字母,例如 cat sa。 在您完成输入 sammy.txt 的整个文件名之前,请按 TAB 键。 这应该会自动完成完整的文件名,以便您的终端提示符显示以下内容:

cat sammy.txt

现在,如果您按 ENTER,终端应该将文件的内容返回到命令行。

另一个快捷方式是按 UP 箭头键,它可以让您循环浏览最近运行的命令。 在光标闪烁的新行上,按几次 UP 箭头键可以快速访问之前的命令。

如果您需要复制您在终端中执行的所有命令,您还可以使用恰当命名的 history 命令调用此会话的整个历史记录:

history

根据您的练习量,您应该会收到 30 行或更多行命令,从以下输出开始:

Output    1  pwd
    2  mkdir files
    3  ls
    4  ls -l
...

随着您对命令行界面的熟练掌握,熟悉这些快捷方式将为您提供支持。

处理来自 Web 的文件

在连接到 Internet 的命令行界面上工作最令人兴奋的方面之一是您可以访问网络上的所有资源,并且可以以自动化的方式对其进行操作。 使用终端,您还可以直接访问您拥有凭据的云服务器、管理和编排云基础设施、构建自己的 Web 应用程序等等。 现在,由于我们已经学习了如何在终端上处理文本文件,我们将讨论如何从网络上下载文本文件,以便我们使用的机器可以使用该文本文件。

让我们回到 files/ 目录:

cd /home/sammy/files

从这里开始,我们将使用 curl 命令将数据从网络传输到浏览器上的个人交互式终端。 命令 curl 代表 client URL(网址)。

我们在云服务器上上传了儒勒·凡尔纳的海底两万联盟的短文。 我们将该文件的 URL 传递给 curl 命令,如下所示。

curl https://assets.digitalocean.com/articles/command-line-intro/verne_twenty-thousand-leagues.txt

一旦我们按下 ENTER,我们将收到段落的文本作为终端的输出(摘录如下)

Output"You like the sea, Captain?"

"Yes; I love it! The sea is everything. It covers seven tenths of the terrestrial globe.
...
"Captain Nemo," said I to my host, who had just thrown himself on one of the divans, "this
is a library which would do honor to more than one of the continental palaces, and I am
absolutely astounded when I consider that it can follow you to the bottom of the seas."

虽然在我们的终端窗口上显示文本很有趣,但我们没有可用的文件,我们只传输了数据但没有存储它。 (您可以通过运行 ls 来验证该文件是否不存在)。

为了将文本保存到文件中,我们需要运行带有 -O 标志的 curl,这使我们能够将文本输出到文件中,使用与远程相同的名称文件为我们的本地副本。

curl -O https://assets.digitalocean.com/articles/command-line-intro/verne_twenty-thousand-leagues.txt

您将从终端收到您的文件已下载的反馈。

Output  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2671  100  2671    0     0  68487      0 --:--:-- --:--:-- --:--:-- 68487

如果您想使用文件的特定和备用名称,您可以使用 -o 标志并将新文件的名称作为参数传递(在本例中为 jules.txt )。

curl -o jules.txt https://assets.digitalocean.com/articles/command-line-intro/verne_twenty-thousand-leagues.txt

我们现在可以像处理任何其他文本文件一样处理该文件。 尝试使用 cat,或使用 nano 编辑它。

在下一节中,我们将清理一些文件并退出我们的终端。

删除文件和终止命令

与任何其他计算机一样,我们有时需要删除不再相关的文件和文件夹,并退出我们正在使用的程序。

假设我们认识的 DigitalOcean University 的学生已经毕业,我们需要清理他们的文件和相关文件夹。 确保您位于 students/ 目录中:

cd /home/sammy/files/students

如果你运行 ls,你的文件夹可能有几个文件,像这样:

Outputalex.txt  drew.txt  jamie.txt  jesse.txt  sammy.txt  taylor.txt

我们可以使用 rm 命令删除单个文件,该命令代表 remove。 我们需要将要删除的文件作为参数传递。

警告:请注意,一旦您删除了文件,就无法撤消。 确保在按 ENTER 之前要删除文件。


rm sammy.txt

现在,如果我们运行 ls,我们会注意到 sammy.txt 不再在文件夹中:

Outputalex.txt  drew.txt  jamie.txt  jesse.txt  taylor.txt

虽然我们现在知道我们可以使用 rm 删除单个文件,但如果我们想删除整个 students/ 目录及其所有内容,则效率不高。

用于删除目录的命令称为rmdir,代表remove directory。 让我们移动到 files 的父文件夹,以便我们可以从那里使用 students/ 目录(我们将无法删除我们当前所在的文件夹)。

cd ..

/home/sammy/ 用户目录,我们可以在 students 上运行 rmdir

rmdir students

但是,这不起作用,因为我们收到以下反馈:

Outputrmdir: failed to remove 'students': Directory not empty

该命令不起作用,因为 rmdir 仅适用于空目录,并且 students 目录中仍有文件。 (在这里,您可以创建一个新的空文件夹,然后在上面尝试 rmdir。 可以使用 rmdir 删除空文件夹。)

要删除仍然在其中的文件的目录,我们需要尝试不同的选项。 在计算机科学中,recursion常用来迭代自引用; 所以我们可以同时调用一个主要项目及其所有依赖项。 使用 rm 命令,我们可以递归地删除主 students 目录及其所有内容依赖项。 我们将使用代表 r 递归的 -r 标志,并将文件夹 students 作为参数传递。

rm -r students

此时,如果我们运行 ls,我们会注意到 students/ 不再在我们当前的目录中,并且它所保存的文件也不可用,因为它们都已被删除.

完成终端会话后,尤其是在远程服务器上工作时,可以使用 exit 命令退出终端。 一旦您对在此会话中取得的成就感到满意(因为您将无法恢复它),您可以输入以下内容,然后输入 ENTER 以离开终端。

exit

在我们的交互式终端上,我们将收到以下输出,确认我们的会话已经结束。

OutputSession ended

此会话完成后,您可以刷新此页面,然后启动新终端以尝试替代命令,或创建新文件系统以进行探索。

结论

恭喜! 您现在已经熟悉了终端界面,并且正在使用计算机和服务器做更多事情。

要继续学习,您可以通过我们的 云计算简介 课程来设置和管理远程服务器。