介绍
今天,我们中的许多人都熟悉具有图形用户界面(也称为 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-based)操作系统中,提示符末尾的符号可能是一个$
符号或一个#
符号,其含义如下:
$
或美元符号 – 您以普通用户身份登录#
或井号/英镑符号 — 您以具有提升权限的用户身份登录
#
环境中注明的用户也称为 root 用户,默认情况下将其视为超级用户或管理员。
为了我们在下面的浏览器终端中的目的,您以普通用户身份登录,但您也通过sudo
命令拥有管理员权限。由于这是一个临时终端,您无需担心在终端中输入的内容,因为一旦我们完成,我们将销毁所有内容。同样,对于云服务器,如果出现问题,可以销毁服务器并重新开始。
请注意,在本地计算机的终端上工作时最好多加小心,因为您可能会以管理员身份在终端上进行更改,从而对您正在使用的计算机进行永久性更改。
此时,在浏览器中启动您的终端后,您可以开始使用本地计算机进行输入。您的文本将出现在闪烁的光标处。我们将在接下来的部分中了解我们可以在此处键入的内容。
熟悉目录
我们将通过键入命令开始使用终端。一个命令是由用户给定的,沟通它是什么,用户希望电脑做的指令。您将在终端中输入您的命令,然后在您准备好让计算机执行给定命令时按下ENTER
或RETURN
。
让我们输入以下命令,后跟ENTER
. 您还可以复制该命令,或通过将鼠标悬停在下面代码块中的相关链接,使其在启动的交互式终端中运行。
- pwd
运行此命令后,您将收到以下输出:
Output/home/sammy
该pwd
命令表示“ p怨恨W¯¯工作会有d irectory”,它可以让你知道你在哪里当前的文件系统中。
在此示例中,您位于名为 的目录(或文件夹)中/home/sammy
,它代表名为 的用户sammy
。如果您以root
具有提升权限的用户身份登录,则该目录将被称为/root
。在个人计算机上,此目录可能称为拥有计算机的用户的名称。Sammy Shark 的计算机可能有/sammy
或/sammy-shark
或/home/sammy
作为其主要用户目录。
现在,这个目录是空的。让我们创建一个目录来存储我们在学习本教程时将创建的文件files
,例如,我们可以调用该目录。
要做到这一点,我们将使用mkdir
命令,主张“中号一ķ ê DIR ectory。” 键入命令后,我们需要写入文件夹的名称,该名称会将值传递给命令,以便命令可以在创建此目录时执行。此值(文件夹的名称)称为参数,它是提供给命令的输入。如果您熟悉自然语言语法,则可以将参数视为命令动词所作用的对象。
为了创建一个名为的新目录,files
我们将编写以下内容,mkdir
作为命令和files
参数:
- mkdir files
运行此命令后,除了带有闪烁光标的新行之外,您将不会收到任何输出。通过终端上的这条新行,您已准备好执行下一个命令。
列出内容并了解权限
由于我们还没有收到任何关于我们新目录的具体反馈,我们将使用一个命令来了解更多关于我们当前工作目录中的内容。您可以通过列出目录中的文件来确认新目录确实存在,使用ls
命令(表示“ l i s t”):
- ls
您将收到确认files
目录存在的输出:
Outputfiles
这为我们提供了有关当前工作目录中内容的一般信息。如果我们想了解更多详细信息,我们可以ls
使用所谓的标志来运行命令。在 Linux 命令中,标志用连字符-
和字母书写,将附加选项(和更多参数)传递给命令。在我们的示例中,我们将添加-l
标志,当与它配对时,它ls
表示我们希望使用选项在我们的命令中使用长列表格式。
让我们输入这个命令和标志,像这样:
- ls -l
按下 后ENTER
,我们将在终端中收到以下输出:
Outputtotal 4
drwxr-xr-x 2 sammy sammy 4096 Nov 13 18:06 files
这里有两行输出。第一行是指分配给该目录的计算机内存块,第二行主要是指用户对该文件的权限。
为了获得更易读的输出,我们还可以传递-h
or--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 | d irectory(或文件夹) -一个类型的文件,可以保持其他文件,用于组织文件系统是有用的; 如果是这样- ,这将引用非目录文件 |
r | [R EAD -允许打开和读取文件或列出目录的内容 |
瓦 | w ^仪式-允许修改一个文件的内容; 并在目录中添加、删除、重命名文件 |
X | e x ecute — 运行作为程序的文件或进入和访问目录中的文件的权限 |
在drwx
字符串的第一个字符中,第一个字母d
表示该项目files
是一个目录。如果这是一个目录以外的文件,则该字符串将以连字符开头,如在 中-rwx
,其中第一个连字符表示非目录文件。下面的三个字母,rwx
代表的权限为所有者的目录files
,并表示该目录files
可[R EAD,W¯¯雷农和e X由文件所有者执行。如果这些字符中的任何一个被连字符替换,则表示所有者不具有该字符所代表的权限类型。稍后我们将讨论如何识别文件的所有者。
输出中接下来的三个字符是r-x
,代表目录的组权限files
。在这种情况下,该组具有读取和执行权限,但没有写入权限,因为w
被替换为-
. 我们稍后将讨论如何识别组。
第一个字符串的最后三个字符r-x
代表有权访问该机器的任何其他组的权限。在这种情况下,这些用户组也可以读取和执行,但不能写入。
数字2
输出指的是链接到本文件的数量。在 Linux 中,链接提供了一种创建快捷方式以帮助用户导航文件系统的方法。创建此文件时,Linux 做了一些后台工作来创建文件的绝对链接和文件的自引用链接,以允许用户沿相对路径导航。我们将在下一节讨论绝对路径和相对路径。
在数字之后2
,这个词sammy
会显示两次。这部分输出提供有关与files
目录关联的所有者和组的信息。sammy
这一行中的第一个实例指的是目录的所有者,我们之前看到的权限是rwx
。该sammy
用户是所有者,我们创建的files
目录作为sammy
用户,且该文件的当前所有者。尽管sammy
用户是我们当前环境中的唯一用户,但类 Unix 操作系统通常有多个用户,因此了解哪个用户拥有文件的所有权很有用。
的第二个实例是sammy
指有权访问该files
目录的组,我们之前看到的其权限是r-x
。在这种情况下,组名与所有者 username 相同sammy
。在实际环境中,操作系统上可能有其他组可以访问该目录,例如staff
或 类似的用户名admin
。
此输出行的其余详细信息4.0K
是机器上目录的内存分配,以及目录的最后修改日期(到目前为止,我们刚刚创建了它)。
有了对文件系统和权限的更深入了解,我们可以继续在 Linux 终端上导航文件系统。
浏览文件系统
到目前为止,我们已经学习了如何确定我们在文件系统中的位置、如何创建新目录、如何列出文件以及如何确定权限。
接下来让我们学习如何在文件系统中移动。我们已经创建了一个新目录,但我们仍然在主/home/sammy
用户目录中。为了移动到/home/sammy/files
我们创建的目录中,我们将使用该cd
命令并将我们想要移动到的目录的名称作为参数传递。该命令cd
表示“ Ç焊割d irectory,”我们将构建它像这样:
- cd files
同样,除了带有闪烁光标的新行之外,您不会收到任何输出,但是我们可以使用之前/home/sammy/files
使用的pwd
命令检查我们是否在目录中:
- pwd
您将获得以下输出,确认您所在的位置:
Output/home/sammy/files
这验证了你在/home/sammy/files
该目录/home/sammy
用户目录。你觉得这个语法很熟悉吗?它可能会让您想起带有正斜杠的网站 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 Foundation 文档。
您还会注意到我们已经进入了一个目录,即/home
用户文件夹。从/
目录中,我们可以将目录改回 ,/home
然后再改回files
,或者我们可以通过在那里键入绝对路径直接移回该文件夹cd
:
- cd /home/sammy/files
现在,如果您运行,pwd
您将收到/home/sammy/files
作为输出。
一个文件路径是其中一个文件或目录位于您的计算机或服务器上的表示。您可以以相对或绝对方式调用文件或目录的路径。一个相对路径时,我们已经将我们移动到另一个位置相对于我们当前的工作目录,就像我们/home/sammy/
再移入files/
。一个绝对路径是当我们调用直接线的位置,就像我们上面那样/home/sammy/files
,显示出我们开始在/
目录中,称为/home/sammy/
用户目录,然后嵌套files/
目录。
此外,Linux 利用点符号来帮助用户通过相对路径导航。单字.
代表您当前所在的目录,双字..
代表父目录。因此,从我们当前所在的位置 ( /home/sammy/files
),我们可以使用两个点返回上级/home/sammy
用户目录,如下所示:
- cd ..
如果您运行pwd
,您将收到/home/sammy
您的输出,如果您运行ls
,您将收到files
您的输出。
另一个需要熟悉的重要符号是~
它代表您机器的主目录。在这里,我们的主目录是/home/sammy
为 sammy 用户调用的,但在本地机器上,它可能是您自己的名字,如sammy-shark/
.
您可以从机器上的任何位置键入以下内容并返回到此主目录:
- cd ~
在这一点上,您可以随意使用到目前为止所学的命令浏览您的文件系统。在下一节中,我们将开始处理文本文件。
创建和修改文本文件
现在我们对 Linux 文件系统有了一个基础以及如何绕过它,让我们开始创建新文件并学习如何在命令行上操作文本。
让我们首先确保我们位于用户文件夹的files/
目录中/home/sammy
,我们可以通过验证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!
该命令以 Echo of Ovid’s Metamorphosis命名,echo
返回我们请求的内容。在这种情况下,它回响了,“你好,世界!” 但是,就其本身而言,该echo
命令不允许我们将文本值存储到文本文件中。为此,我们需要键入以下内容:
- echo "Sammy the Shark" > sammy.txt
上面的命令使用echo
, 然后是我们想用引号添加到文件中的文本,然后是重定向操作符>
,最后是我们新文本文件的名称sammy.txt
.
我们可以再次使用ls
.
- ls
Outputocean.txt sammy.txt
现在我们的/home/sammy/files
用户文件夹中有两个文本文件。接下来,我们可以确认该文件sammy.txt
确实包含我们要求终端回显的文本。我们可以用cat
命令来做到这一点。con cat enate 的缩写,该cat
命令对于处理文件非常有用。它的功能之一是显示文件的内容。
- cat sammy.txt
运行命令后,我们将收到以下输出:
OutputSammy the Shark
如果我们cat
在空文件上运行ocean.txt
,我们将不会收到任何回报,因为该文件中没有文本。我们也可以向这个现有文件添加文本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 the Shark
使用键盘的箭头键,将光标移动到行尾,然后从 Sammy 的角度开始键入几行。
注意:在命令行上,您不能使用鼠标或其他指针在文件系统和文件内进行导航。您需要使用键盘,尤其是箭头键来移动文本文件。
完成文件后,它可能会显示如下内容:
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
这个文件。在这里,^
符号指的是键盘上的Control
或CTRL
键,上面的输出告诉我们,我们需要将该键与X
(使用小写,不SHIFT
按键)组合以离开文件。让我们一起按下这两个键:
CTRL x
以上内容通常作为技术文档CTRL + X
或Ctrl+x
在技术文档中内嵌。
此时,您将收到以下提示:
OutputSave modified buffer?
Y Yes
N No ^C Cancel
为了保存它,我们将按是的字母y
:
y
您将收到如下反馈。
OutputFile Name to Write: sammy.txt
还有其他选项,包括使用 取消CTRL + C
,但如果您愿意关闭文件,此时您可以按ENTER
保存文件并退出。
假设我们要为 DigitalOcean 大学的学生制作一些文件。让我们在files/
调用中创建一个新目录students
:
- mkdir students
接下来,让我们sammy.txt
进入新students/
目录。该mv
命令代表m o ve,将允许我们更改文件的位置。该命令是通过将我们要移动的文件作为第一个参数,并将新位置作为第二个参数来构造的。以下两个执行将产生相同的结果。
- mv sammy.txt students
- mv sammy.txt students/sammy.txt
如果我们想更改文件的名称,后一个选项将很有用,如mv sammy.txt students/sammy-the-shark.txt
.
现在,如果我们运行该ls
命令,我们将看到只有ocean.txt
和students/
目录在我们的当前目录 ( files/
) 中。让我们进入students/
文件夹。
- cd students
为了给其他学生有一个模板,我们可以复制sammy.txt
文件来创建更多的文件。为此,我们可以使用该cp
命令,它代表c o p y。该命令的工作方式与该mv
命令类似,将原始文件作为第一个参数,将新文件作为第二个参数。我们将为绿叶海龙亚历克斯制作一个文件:
- cp sammy.txt alex.txt
现在,我们可以打开alex.txt
并检查它。
- nano alex.txt
到目前为止,alex.txt
看起来与sammy.txt
. 通过替换一些单词,我们可以修改这个文件,如下所示。请注意,您可以使用CTRL + K
删除整行。
Alex the Leafy Seadragon
Hello, I am Alex.
I am studying oceanography.
Nice to meet you!
您可以按CTRL + X
theny
然后保存并关闭文件ENTER
。
如果您想要更多地练习文本文件,请考虑为 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 上的所有资源,并且可以以自动方式对其进行操作。使用终端,您还可以直接访问您拥有凭据的云服务器、管理和编排云基础架构、构建您自己的 Web 应用程序等等。现在,由于我们已经学习了如何在终端上处理文本文件,我们将讨论如何从 Web 中提取文本文件,以便我们使用的机器可以使用该文本文件。
让我们回到files/
目录:
- cd /home/sammy/files
从这里开始,我们将使用该curl
命令将数据从 Web 传输到浏览器上的个人交互终端。该命令curl
表示Ç lient URL(网页地址)。
我们在云服务器上上传了儒勒·凡尔纳 (Jules Verne) 的《海底两万个联赛》中的一小段。我们将该文件的 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
)。
为了将文本保存到文件中,我们需要curl
使用-O
标志运行,这使我们能够将文本输出到文件中,为我们的本地副本采用与远程文件相同的名称。
- 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大学的学生已经毕业,我们需要清理他们的文件和相关文件夹。确保您位于以下students/
目录中:
- cd /home/sammy/files/students
如果您运行ls
,您的文件夹可能有几个文件,如下所示:
Outputalex.txt drew.txt jamie.txt jesse.txt sammy.txt taylor.txt
我们可以删除单个文件用rm
命令,它代表– [R ê米OVE。我们需要将要删除的文件作为参数传递。
警告:请注意,一旦删除文件,就无法撤消。在按 之前,请确保您要删除该文件ENTER
。
- rm sammy.txt
现在,如果我们运行ls
,我们会注意到它sammy.txt
不再在文件夹中:
Outputalex.txt drew.txt jamie.txt jesse.txt taylor.txt
虽然我们现在知道我们可以使用 删除单个文件rm
,但如果我们想删除整个students/
目录及其所有内容,时间效率并不高。
是,用于删除目录调用该命令时rmdir
,它代表– [R Ë米OVE DIR ectory。让我们移动到 的父文件夹,files
以便我们可以students/
从那里处理目录(我们将无法删除我们目前所在的文件夹)。
- cd ..
从/home/sammy/
用户的目录,我们可以运行rmdir
的students
。
- rmdir students
但是,这不起作用,因为我们收到以下反馈:
Outputrmdir: failed to remove 'students': Directory not empty
该命令不起作用,因为rmdir
仅适用于空目录并且students
目录中仍有文件。(在这里,您可以创建一个新的空文件夹,然后试一试rmdir
。可以使用 删除空文件夹rmdir
。)
要删除包含文件的目录,我们需要尝试不同的选项。在计算机科学中,递归通常用于迭代自引用;所以我们可以同时调用一个主项和它的所有依赖项。使用该rm
命令,我们可以递归删除主students
目录及其所有内容依赖项。我们将使用的-r
标志,它代表– [R ecursive和文件夹传递students
作为参数。
- rm -r students
此时,如果我们运行ls
,我们会注意到它students/
不再在我们当前的目录中,并且它保存的文件也不可用,因为它们都已被删除。
完成终端会话后,尤其是在远程服务器上工作时,您可以使用exit
命令退出终端。一旦您对您在本次会话中取得的成就感到满意(因为您将无法恢复它),您可以键入以下内容,然后ENTER
离开终端。
- exit
在我们的交互式终端上,我们将收到以下输出,确认我们的会话已结束。
OutputSession ended
完成此会话后,您可以刷新此页面,然后启动新终端以尝试替代命令,或创建新文件系统进行探索。
结论
恭喜!您现在已经了解了终端界面的使用方式,并且可以很好地利用计算机和服务器做更多的事情。