简介
<$>[备注] 注意: 本教程中的交互终端当前处于禁用状态,因为我们正在努力改善交互学习体验。您仍然可以使用本教程来学习命令行和练习Linux命令,但您将需要在您的计算机或虚拟机上使用终端。 <$>
今天,我们中的许多人都熟悉电脑(台式机和笔记本电脑)、智能手机和平板电脑,它们具有图形用户界面(也称为gui),使我们能够通过视觉体验来导航应用程序、Web和我们的文件(如文档和照片)。Windows、MacOS和Linux操作系统都提供了各种桌面环境(例如,带有文件夹和文件的图像)和下拉菜单,所有这些都提供了对计算机程序、应用程序和我们自己的媒体的访问。
尽管对于许多用户来说,图形用户界面是使用计算机的一种直观方式,但它们通常不会为我们的计算机提供最大的能力,并且它们可能会阻止我们对计算机拥有完全的管理访问权限,包括安装、修改或删除软件或文件。此外,由于图形用户界面在很大程度上是可视的,所以它们通常不像所有用户所能访问的那样容易访问。
在没有图形用户界面的情况下导航您自己的个人计算机和远程云服务器的一种方法是通过基于文本的终端或命令行界面(CLI)。
终端界面几乎存在于所有计算机操作系统上,终端仿真器也可以作为平板电脑和智能手机的应用程序使用。终端通过增加管理员访问权限、增强自定义环境的能力以及自动化流程的机会,为用户提供对其计算机的更大总体访问权限。它们还为用户提供访问远程计算机(如云服务器)的能力。
本教程将为不熟悉终端环境的用户提供通过浏览器中的嵌入式Web终端使用命令行界面的基础知识,您可以在下面启动该浏览器。如果您已经对终端有了一定的了解,那么您可能更愿意阅读我们的LinuxLinux简介Terminal教程]。完成本教程后,您应该了解如何在Linux(或MacOS)计算机或服务器上使用终端。
了解终端窗口
当您第一次访问新的计算机或智能手机时,您可能希望打开它,并通过检查哪些应用程序可用来了解如何使用它,并了解设备的位置,以便您可以自定义设备以满足您的需求。你可以通过类似的方式通过终端熟悉一台计算机。
您在此浏览器窗口中启动的交互终端,通过单击上面的`启动交互终端!‘按钮,在浏览器窗口的底部显示一个白色矩形:
屏幕截图
如果您尚未启动终端,请立即使用本教程开头的按钮启动。
在你的交互式浏览器终端上,应该有一个美元符号$
和一个闪烁的光标。在这里,您将开始键入命令来告诉终端执行什么操作。
您启动的终端是Ubuntu 20.04终端。Ubuntu是Linux的流行发行版,最初基于Unix操作系统。MacOS操作系统也是基于Unix的。如果你是在Linux或MacOS机器上阅读本教程,你的操作系统上应该有一个终端,它的工作方式类似于我们在本指南中将使用的嵌入式终端。
在许多基于Unix(或* nix)的操作系统中,提示符末尾的符号可以是$
符号或#
符号,这意味着:
$
或美元符号-您以普通用户身份登录#
或hashtag/磅符号-您以具有提升权限的用户身份登录
#
环境中记录的用户也称为根用户,默认情况下被认为是超级用户或管理员。
对于我们在下面的浏览器终端中的目的,您以普通用户身份登录,但您也通过sudo
命令拥有管理员权限。由于这是一个临时终端,您不必担心您在终端中输入了什么,因为一旦完成,我们会销毁所有东西。同样,使用云服务器时,如果出现问题,可以销毁服务器并重新开始。
<$>[警告] 请注意 在本地计算机的终端上工作时最好多加小心,因为您可能会以管理员的身份在终端上进行更改,从而对您正在使用的计算机进行永久性更改。 <$>
此时,随着您的终端在浏览器中启动,您可以开始使用本地计算机在其中输入内容。您的文本将显示在闪烁的光标上。在接下来的部分中,我们将了解可以在此处键入的内容。
熟悉目录
我们将通过键入命令开始使用终端。命令 是用户发出的指令,传达用户希望计算机做什么。您将在终端中输入命令,然后在准备好让计算机执行给定命令时按Enter‘或
RETURN’。
让我们键入下面的命令,然后输入ENTER
。您也可以复制该命令,或者当您将鼠标悬停在它上面时,通过单击下面代码块中的相关链接,让它在启动的交互式终端中运行。
1pwd
运行此命令后,您将收到以下输出:
1[secondary_label Output]
2/home/sammy
pwd
命令代表**p** resent** w** orking** d** irecary
,它让您知道您在当前文件系统中的位置。
在本例中,您位于名为/home/sammy
的目录(或文件夹)中,该目录(或文件夹)代表名为sammy
的用户。如果您以具有提升权限的用户root
身份登录,则该目录将称为/root
。在个人计算机上,此目录可能称为拥有该计算机的用户的名称。Sammy Shark的计算机可能将/sammy
或/sammy-Shark
或/home/sammy
作为其主要用户目录。
现在,这个目录是空的。让我们创建一个目录来存储我们将在本教程中创建的文件,例如,我们可以将其称为files
。
为此,我们将使用mkdir
命令,该命令代表)称为参数 ,它是提供给命令的输入。如果您熟悉自然语言语法,则可以将参数视为命令的动词所作用的宾语。
为了创建一个名为files
的新目录,我们将编写以下内容,其中mkdir
是命令,files
是参数:
1mkdir files
运行此命令后,您将不会收到任何输出,只会收到一个带有闪烁光标的新行。在终端上有了这行新代码后,您就可以执行下一条命令了。
列出内容并了解权限
由于我们还没有收到关于我们的新目录的任何具体反馈,我们将使用一个命令来了解更多关于我们当前工作目录中的内容。可以通过列出目录中的文件来确认新目录确实存在,使用ls
命令(表示):
1ls
您将收到确认files
目录存在的输出:
1[secondary_label Output]
2files
这为我们提供了有关我们当前工作目录中内容的一般信息。如果我们想了解更多详细信息,可以使用所谓的标志来运行ls
命令。在Linux命令中,标志 由连字符-
和字母组成,向命令传递额外的选项(和更多参数)。在我们的示例中,我们将添加-l
标志,当它与ls
配对时,表示我们希望在我们的命令中使用选项来使用长列表格式。
让我们键入以下命令和标志,如下所示:
1ls -l
按Enter
键后,我们将在终端中收到以下输出:
1[secondary_label Output]
2total 4
3drwxr-xr-x 2 sammy sammy 4096 Nov 13 18:06 files
这里有两行输出。第一行是指分配给该目录的计算机内存块,第二行主要是指用户对该文件的权限。
为了得到一个更易于人类阅读的输出,我们还可以传递-h
或--human-readable
标志,它将以人类可读的格式打印内存大小,如下所示。通常,一个连字符-
表示单字母选项,两个连字符--
表示用文字写出的选项。请注意,某些选项可以使用这两种格式。我们可以通过将标志链接在一起来将多个选项构建到一个命令中,如-lh
。
例如,下面的两个命令提供相同的结果,尽管它们的编写方式不同:
1ls -lh
1ls -l --human-readable
这两个命令都将返回以下输出,类似于上面的输出,但包含更多关于内存块的内容:
1[secondary_label Output]
2total 4.0K
3drwxr-xr-x 2 sammy sammy 4.0K Nov 13 18:06 files
输出的第一行告诉我们4K的计算机内存专用于该文件夹。输出的第二行有更多细节,我们将更详细地介绍这些细节。下表显示了我们将介绍的所有信息的一般高级参考。
文件类型|权限|链接计数|所有者|组|文件大小|上次修改日期|文件名
D|rwxr-xr-x|2|Sammy|Sammy|4.0K|11月13日18:06|文件
您会注意到,我们的目录名files
位于输出的第二行末尾。此名称表示输出行正在描述/home/sammy
用户目录中的哪个特定项目。 如果目录中有另一个文件,则会有另一行输出,其中包含该文件的详细信息。
在行的前面,有一个字符和破折号的列表。让我们把每个字的意思分解一下:
字符|描述
D|d 目录(或文件夹)-一种可以保存其他文件的文件类型,对于组织文件系统很有用;如果是-
,则指的是非目录文件
R|r ead-打开和读取文件或列出目录内容的权限
W|w 写入-修改文件内容以及在目录中添加、删除和重命名文件的权限
X|ex eCUTE-运行作为程序的文件或输入和访问目录中的文件的权限
在字符串的前drwx
字符中,第一个字母d
表示files
项是一个目录。如果这是一个不是目录的文件,则该字符串将以连字符开头,如-rwx
,其中第一个连字符表示非目录文件。以下三个字母rwx
表示files
目录的_owner_权限,表示files
目录可以r ead、** w** Ritten、e** x** 由文件所有者执行。如果这些字符中的任何一个被连字符替换,则意味着所有者没有该字符所代表的权限类型。稍后我们将讨论如何识别文件的所有者。
输出中接下来的三个字符是r-x
,它代表files
目录的_group_权限。在本例中,由于w
被替换为-
,因此该群组有读权限和执行权限,但没有写权限。稍后我们将讨论如何识别该群体。
第一个字符串的最后三个字符r-x
表示有权访问该计算机的任何其他组的权限。在这种情况下,这些用户组也可以读取和执行,但不能写入。
输出中的数字`2‘是指指向该文件的链接数。在Linux中,链接 提供了一种创建快捷方式的方法,帮助用户导航文件系统。当您创建该文件时,Linux进行了一些后台工作,以创建指向该文件的绝对链接和指向该文件的自引用链接,以允许用户沿着相对路径导航。我们将在下一节中讨论绝对路径和相对路径。
在数字2
之后,会显示两个字sammy
。这部分输出提供了有关与files
目录相关联的所有者和组的信息。该行sammy
的第一个实例是目录的所有者,前面我们看到的权限是rwx
。sammy
用户是文件的所有者,因为我们将files
目录创建为sammy
用户,并且是该文件的当前所有者。虽然在我们当前的环境中,‘sammy`用户是唯一的用户,但类Unix操作系统通常有多个用户,因此知道哪个用户拥有文件的所有权是很有用的。
sammy
的第二个实例是对files
目录有访问权限的组,前面我们看到的权限是r-x
。在本例中,组名称与所有者用户名sammy
相同。在现实环境中,操作系统上可能有其他组有权访问该目录,例如Staff
或像admin
这样的用户名。
这一输出行的其余细节是机器上目录的内存分配的`4.0K‘,以及目录的最后修改日期(到目前为止,我们刚刚创建了它)。
对文件系统和权限有了更好的了解后,我们可以继续导航我们的Linux终端上的文件系统。
文件系统导航
到目前为止,我们已经学习了如何确定我们在文件系统中的位置、如何创建新目录、如何列出文件以及如何确定权限。
接下来,让我们学习如何在文件系统中移动。我们已经创建了一个新目录,但我们仍然在主/home/sammy
用户目录中。为了移动到我们已经创建的/home/sammy/files
目录中,我们将使用cd
命令,并将要移动到的目录的名称作为参数传递。命令cd
代表**c** hange** d** irecary
,我们将按如下方式构建:
1cd files
同样,除了一个闪烁光标的新行之外,您不会收到其他输出,但我们可以使用前面使用的pwd
命令检查我们是否在/home/sammy/files
目录中:
1pwd
您将得到以下输出,以确认您所在的位置:
1[secondary_label Output]
2/home/sammy/files
这将验证您是否位于/home/sammy
用户目录的/home/sammy/files
目录中。你觉得这个语法熟悉吗?它可能会让你想起一个网站的URL和它的正斜杠,事实上,网站也是在目录中的服务器上结构化的。
让我们转到服务器的主目录。无论我们在文件系统的哪个位置,我们都可以使用命令cd /
移动到主目录:
1cd /
为了确认我们已经移动并了解此目录中的内容,让我们运行LIST命令:
1ls
我们将收到以下输出:
1[secondary_label Output]
2bin boot dev etc home lib lib32 lib64 libx32 media mnt opt proc root run s sbin srv sys tmp usr var
里面有很多文件!/
目录是Linux服务器的主目录,称为根目录。请注意,根目录与默认的).
您还会注意到,我们已经在其中找到了一个目录,即/home
用户文件夹。从/
目录,我们可以将目录切换回/home
,然后再切换回files
,也可以通过输入cd
的绝对路径直接移回该文件夹:
1cd /home/sammy/files
现在,如果您运行pwd
,您将收到/home/sammy/files
作为输出。
文件路径 表示文件或目录在计算机或服务器上的位置。您可以以相对或绝对方式调用文件或目录的路径。** 相对路径** 是当我们移动到相对于当前工作目录的位置时,就像我们已经在/home/sammy/
中,然后移动到files/
中一样。** 绝对路径** 是当我们调用指向某个位置的直接线路时,就像我们上面对/home/sammy/files
所做的那样,这表明我们从/
目录开始,称为/home/sammy/
用户目录,然后是嵌套的files/
目录。
此外,Linux利用点符号 帮助用户通过相对路径导航。一个.
代表您当前所在的目录,两个..
代表父目录。因此,从我们目前所在的位置(/home/sammy/files
),我们可以使用两个点返回到父/home/sammy
用户目录,如下所示:
1cd ..
如果运行pwd
,则输出为/home/sammy
;如果运行ls
,则输出为files
。
另一个需要熟悉的重要符号是~
,它代表您的计算机的主目录。在这里,我们的主目录是Sammy用户的/home/sammy
,但在本地机器上,它可能是您自己的名字,如sammy-Shark/
。
您可以从计算机上的任何位置键入以下内容,然后返回到此主目录:
1cd ~
此时,您可以使用到目前为止学到的命令在您的文件系统中自由导航。在下一节中,我们将开始使用文本文件。
创建和修改文本文件
现在我们已经有了Linux文件系统的基础以及如何绕过它,让我们开始创建新文件并学习如何在命令行上操作文本。
我们首先确保我们位于/home/sammy
用户文件夹的files/
目录中,这可以通过使用pwd
进行验证,或者通过更改绝对路径上的目录来实现:
1cd /home/sammy/files
现在,我们将创建一个新的文本文件。我们将制作一个.txt
文件,这是一个可以跨操作系统读取的标准文件。与.doc
文件不同,.txt
文件由_unFormatted_Text组成。未格式化的文本,包括.txt
文件中的文本,可以很容易地在命令行上使用,因此可以在以编程方式处理文本数据时使用(如在中,用于自动文本分析、从文本中提取信息等)。
我们将首先使用Touch
命令,该命令可以创建新文件或修改现有文件。要使用它,您可以使用命令Touch
,并将您要创建的文本文件的名称作为参数传递,如下所示。
1touch ocean.txt
当您按下Enter
键后,您会看到一个新的命令提示符行,您可以列出files/
的当前内容,以确保它已创建。
1ls
1[secondary_label Output]
2ocean.txt
到目前为止,我们已经创建了一个'ocean.txt'文件,它在创建时不包含任何文本。
如果我们想创建一个用文本初始化的文本文件,可以使用ech
命令,该命令用于在Linux中显示文本字符串。
我们可以直接在命令行上使用ECHO
,让界面在我们之后重复。传统的First节目‘Hello,World!’
可以用ECHO
写成这样:
1echo Hello, World!
1[secondary_label Output]
2Hello, World!
以Ovid的Echo‘s_Metamortopsis_命名,ECHO
命令返回我们请求的内容。在这种情况下,它回应道:你好,世界!
然而,就其本身而言,`echo‘命令不允许我们将文本的值存储到文本文件中。为此,我们需要键入以下内容:
1echo "Sammy the Shark" > sammy.txt
上面的命令使用ech
,然后使用引号将文本添加到文件中,然后使用重定向操作符>
,最后是新文本文件的名称sammy.txt
。
我们可以再次使用ls
检查我们的新文件是否存在。
1ls
1[secondary_label Output]
2ocean.txt sammy.txt
现在,我们的/home/sammy/files
用户文件夹中有两个文本文件。接下来,我们可以确认sammy.txt
文件确实包含我们要求终端回显的文本。我们可以使用cat
命令来实现这一点。cat
命令是concat enate的缩写,在处理文件时非常有用。它的功能之一是显示文件的内容。
1cat sammy.txt
运行该命令后,我们将收到以下输出:
1[secondary_label Output]
2Sammy the Shark
如果我们在空文件Ocean an.txt
上运行cat
,我们将不会收到任何结果,因为该文件中没有文本。我们也可以使用ECHO
将文本添加到这个现有的文件中。让我们将佐拉·尼尔·赫斯顿的一句话添加到文件中。
1echo "Some people could look at a mud puddle and see an ocean with ships." > ocean.txt
现在,如果我们对文件运行cat
,我们将收到刚刚输入的文本的输出。
1cat ocean.txt
1[secondary_label Output]
2Some people could look at a mud puddle and see an ocean with ships.
到目前为止,我们已经创建了文本文件并向这些文件添加了文本,但我们还没有修改这些文件。如果我们想这样做,我们可以使用命令行文本编辑器。有几个流行的选择,包括Vim和Emacs。出于我们的目的,我们将使用Nano,这是一个不太复杂的CLI文本编辑程序,我们可以使用它来开始我们的探索。
可以使用nan
命令调用Nano文本编辑器。如果我们想要编辑现有的sammy.txt
文件,可以通过将文件名作为参数传递来实现。
1nano sammy.txt
该文件将在您的终端上打开:
1[label sammy.txt]
2Sammy the Shark
使用键盘的箭头键,将光标移动到行的末尾,从Sammy的角度开始键入几行。
<$>[备注] 注意 :在命令行上,您不能使用鼠标或其他指针来导航,无论是在文件系统中还是在文件中。你需要使用你的键盘,特别是你的箭头键,来移动文本文件。 <$>
当您处理完文件时,它可能如下所示:
1[label sammy.txt]
2Sammy the Shark
3
4Hello, I am Sammy.
5I am studying computer science.
6Nice to meet you!
现在您的文件包含您想要的文本,我们现在可以保存并关闭文件。您可能会注意到,在终端窗口的底部有一些指导:
1^G Get Help ^O WriteOut ^R Read File ^Y Prev Page ^K Cut Text ^C Cur Pos
2^X Exit ^J Justify ^W Where Is ^V Next Page ^U UnCut Text ^T To Spell
因为我们目前已经完成了对该文件的处理,所以我们想退出‘该文件。这里,
^符号指的是键盘上的
Control或
CTRL键,上面的输出告诉我们,我们需要将该键与
X(使用这个小写字母,不按
Shift`键)组合才能离开文件。让我们一起按下这两个键:
1CTRL x
在技术文档中,通常内联为Ctrl+x
或Ctrl+x
。
此时,您将收到以下提示:
1[secondary_label Output]
2Save modified buffer?
3 Y Yes
4 N No ^C Cancel
为了保存它,我们将按字母‘y’表示是:
1y
您将收到如下反馈。
1[secondary_label Output]
2File Name to Write: sammy.txt
还有其他选项,包括使用CTRL+C
取消,但如果您喜欢关闭文件,可以在此时按Enter
保存文件并退出。
假设我们想要为数字海洋大学的学生制作一些文件。让我们在files/
中创建一个新目录,名为Students
:
1mkdir students
接下来,我们将sammy.txt
移到新的Students/
目录中。mv
命令代表m o** v** e,允许我们更改文件的位置。该命令是通过将我们要移动的文件作为第一个参数、将新位置作为第二个参数来构建的。下面的两次执行都将产生相同的结果。
1mv sammy.txt students
1mv sammy.txt students/sammy.txt
如果我们想要更改文件的名称,如mv sammy.txt Students/Sammy-the-Shark.txt
,则后一个选项将非常有用。
现在,如果我们运行ls
命令,我们将看到只有Ocean an.txt
和Students/
目录在我们的当前目录(files/
)中。让我们进入Students/
文件夹。
1cd students
为了给其他同学提供模板,我们可以复制sammy.txt
文件来创建更多的文件。为此,我们可以使用cp
命令,它代表c o** p** y。该命令的工作方式类似于mv
命令,将原始文件作为第一个参数,新文件作为第二个参数。我们将为多叶的Seadragon亚历克斯制作一个文件:
1cp sammy.txt alex.txt
现在,我们可以打开'alex.txt'并检查它。
1nano alex.txt
到目前为止,alex.txt
和sammy.txt
看起来是一样的。通过替换一些单词,我们可以将此文件修改为如下所示。请注意,您可以使用CTRL+K
来删除整行。
1[label alex.txt]
2Alex the Leafy Seadragon
3
4Hello, I am Alex.
5I am studying oceanography.
6Nice to meet you!
您可以通过按CTRL+X
,然后按y
,然后按Enter
来保存和关闭文件。
如果你想更多地练习文本文件,可以考虑为螳螂杰米、章鱼杰西、鱿鱼德鲁或黄鳍金枪鱼泰勒创建文件。
一旦您对创建、编辑、复制和移动文本文件感到满意,我们就可以进入下一节。
自动补全和历史记录
许多版本的命令行,包括本教程中嵌入的交互式终端,允许您在执行过程中自动完成和重用命令。这支持您更快地移动,因为它节省了您的打字时间。
尝试在输入您正在处理的文本文件的前几个字母的同时输入cat
,例如,Cat sa
。在您输入完sammy.txt
的整个文件名之前,请按TAB
键。这将自动完成完整的文件名,以便您的终端提示符显示以下内容:
1cat sammy.txt
现在,如果您按Enter
,终端应该会将文件内容返回到命令行。
另一种快捷方式是按UP‘箭头键,这将允许您在最近运行的命令之间循环。在光标闪烁的新行上,按几次
UP‘箭头键即可快速访问以前的命令。
如果你需要复制你在终端中执行的所有命令,你也可以使用恰当命名的history
命令来调用这个会话的整个历史:
1history
根据您练习的程度,您应该会收到30行或更多行命令,从以下输出开始:
1[secondary_label Output]
2 1 pwd
3 2 mkdir files
4 3 ls
5 4 ls -l
6...
当您更加熟悉命令行界面时,熟悉这些快捷键将为您提供支持。
处理Web文件
在连接到互联网的命令行界面上工作最令人兴奋的方面之一是,您可以访问Web上的所有资源,并可以以自动方式对其执行操作。使用终端,您还可以直接访问您拥有凭据的云服务器、管理和协调云基础设施、构建自己的Web应用程序等。现在,由于我们已经学习了如何在终端上处理文本文件,我们将回顾如何从Web上下载文本文件,以便我们正在使用的机器可以使用该文本文件。
让我们回到files/
目录:
1cd /home/sammy/files
接下来,我们将使用curl
命令将数据从Web传输到浏览器上的个人交互终端。curl
命令代表c lient** URL** (网址)。
我们已经在云服务器上上传了儒勒·凡尔纳的《海洋下的两万里》中的一小段话。我们将把该文件的URL传递给curl
命令,如下所示。
1curl https://assets.digitalocean.com/articles/command-line-intro/verne_twenty-thousand-leagues.txt
一旦我们按下ENTER
,我们将收到文章的文本作为输出到我们的终端(摘录如下)
1[secondary_label Output]
2"You like the sea, Captain?"
3
4"Yes; I love it! The sea is everything. It covers seven tenths of the terrestrial globe.
5...
6"Captain Nemo," said I to my host, who had just thrown himself on one of the divans, "this
7is a library which would do honor to more than one of the continental palaces, and I am
8absolutely astounded when I consider that it can follow you to the bottom of the seas."
虽然在我们的终端窗口上显示文本很有趣,但我们没有可用的文件,我们只传输了数据,但没有存储它。(您可以通过运行ls
来验证该文件不在那里)。
为了将文本保存到文件中,我们需要运行带有-o‘标志的
curl`,这使我们能够将文本输出到文件中,为本地副本使用与远程文件相同的名称。
1curl -O https://assets.digitalocean.com/articles/command-line-intro/verne_twenty-thousand-leagues.txt
您将收到来自终端的反馈,表明您的文件已下载。
1[secondary_label Output]
2 % Total % Received % Xferd Average Speed Time Time Time Current
3 Dload Upload Total Spent Left Speed
4100 2671 100 2671 0 0 68487 0 --:--:-- --:--:-- --:--:-- 68487
如果您想要使用文件的特定和备用名称,可以使用-o
标志并将新文件的名称作为参数传递(在本例中为jules.txt
)。
1curl -o jules.txt https://assets.digitalocean.com/articles/command-line-intro/verne_twenty-thousand-leagues.txt
我们现在可以像处理任何其他文本文件一样处理此文件。尝试使用cat
,或使用nan
进行编辑。
在下一节中,我们将清理一些文件并退出终端。
删除文件和终止命令
与任何其他计算机一样,我们有时需要删除不再相关的文件和文件夹,并退出我们正在使用的程序。
假设我们认识的数字海洋大学的学生已经毕业,我们需要清理他们的文件和相关文件夹。请确保您在Students/
目录中:
1cd /home/sammy/files/students
如果您运行ls
,您的文件夹可能有几个文件,如下所示:
1[secondary_label Output]
2alex.txt drew.txt jamie.txt jesse.txt sammy.txt taylor.txt
我们可以使用rm
命令删除单个文件,该命令代表r e** m** ove。我们需要将要删除的文件作为参数进行传递。
<$>[警告]
警告 :请注意,文件一旦移除,将无法撤消。在按Enter
键之前,请确保您要删除该文件。
<$>
1rm sammy.txt
现在,如果我们运行ls
,我们会注意到sammy.txt
不再位于文件夹中:
1[secondary_label Output]
2alex.txt drew.txt jamie.txt jesse.txt taylor.txt
虽然我们现在知道可以使用rm
删除单个文件,但如果我们想要删除整个Students/
目录及其所有内容,则时间效率不是很高。
用于删除目录的命令称为rmdir
,代表r e** m** ove** dir** ecary。让我们移到files
的父文件夹,这样我们就可以使用那里的Students/
目录(我们将无法删除我们当前所在的文件夹)。
1cd ..
在/home/sammy/
用户目录下,可以对Students
运行rmdir
。
1rmdir students
然而,这并不起作用,因为我们收到以下反馈:
1[secondary_label Output]
2rmdir: failed to remove 'students': Directory not empty
该命令不起作用,因为rmdir
只对空目录起作用,而Students
目录中仍有文件。(在这里,您可以创建一个新的空文件夹,并在其上尝试rmdir
。可以使用rmdir
删除空文件夹。)
要删除仍包含文件的目录,我们需要尝试不同的选项。在计算机科学中,recursion通常用于迭代自引用;因此,我们可以同时调用主要项及其所有依赖项。使用rm
命令,我们可以递归地删除主Students
目录及其所有内容依赖项。我们将使用-r
标志,它代表r ecursive,并传递文件夹Students
作为参数。
1rm -r students
此时,如果我们运行ls
,我们将注意到Students/
不再位于我们当前的目录中,它保存的文件也都不可用,因为它们都已被删除。
当您完成终端会话时,尤其是当您在远程服务器上工作时,您可以使用exit
命令退出终端。一旦您对在此会话中所取得的成果感到满意(因为您将无法恢复它),您可以键入以下内容,后跟‘Enter’以离开终端。
1exit
在我们的交互终端上,我们将收到以下输出,确认我们的会话已经结束。
1[secondary_label Output]
2Session ended
完成此会话后,您可以刷新此页面,然后启动新的终端以尝试替代命令,或创建新的文件系统以进行浏览。
总结
恭喜!您现在已经熟悉了终端接口,并且正在使用计算机和服务器做更多的事情。
要继续学习,您可以通过我们的云Computing简介》课程学习如何设置和管理远程服务器。