命令行教程,第二部分 — 创建和删除文件

命令行教程,第二部分 — 创建和删除文件

在上一课中,我们学习了使用 pwdlsopen 和 cd 命令,实现了从计算机文件树中来回移动。下一步就该学习如何创建、删除文件和目录。在本课中,我们的学习重点是使用两个新的命令创建文件和文件夹:touch 和 mkdir。为了演示如何使用这两个命令,我们创建一个文件结构来表示一个非常简单的动物等级系统。

创建目录和文件

首先,我们来花点时间想一想如何使用 GUI 创建文件夹。在 Mac 电脑上,我们可以通过如下方式来实现:打开 Finder 然后在菜单栏中选择 File → New Folder

使用 GUI 创建文件夹

我们来学习一下如何使用命令行来得到同样的结果。

mkdir 命令

mkdir 是我们用来创建目录的命令(通常发音为 make-dir 或者 “M”-“K”-“dir”),它会创建由我们提供的名称命名的新文件夹。比如,如果你在 Desktop 目录,想要在当前位置创建一个 animals(动物)目录,你将键入以下命令:

~/Desktop $ mkdir animals

使用 mkdir 命令。

如果你想要在 animals 目录中创建一个rodents(啮齿动物)目录,你可以执行以下任一操作(从 Desktop 开始):

  • 使用 cd 跳转到 animals 然后键入 mkdir rodents
  • 直接在当前 Desktop 目录运行命令 mkdir animals/rodents

我们能够使用的方法并不只有这两种,但它们是最为实用的。

创建多个目录

我们也可以通过提供以空格分开的所有目录名称的形式使用 mkdir 命令一次性批量创建多个目录。例如,要在 animals 目录中创建 marsupialscloven_hoofed_animals 和 carnivores 目录,我们可以编写如下命令行:

~/Desktop/animals $ mkdir marsupials cloven_hoofed_animals carnivores

注意: 你应该避免在目录名和文件名中使用空格(而是使用下划线如 cloven_hoofed_animals)。如果不可避免 —— 也许遇到以前创建的文件或目录名称中有空格,可以在空格之前插入一个转义字符\),告诉 shell 如何正确得解释文件名中的空格,比如 mkdir cloven\ hoofed\ animals

touch 命令

在工作目录中创建一个文件

到目前为止,你最有可能创建并保存文件的方式就是使用一个特定的应用程序 —— 比如:在 Microsoft Word 中创建一个 .docx文件、在 Adobe Acrobat 中创建一个 .pdf 文件、或者在文本编辑器中创建一个 .html 文件。在命令行中,你可以使用 touch命令在你的工作目录下创建一个文件。touch 命令会创建一个带有你提供的名称和文件扩展名的新(空)文件。例如,如果你在 Desktop 目录中,想要在该目录创建一个文件 first_file.txt,你可以键入如下命令:

~/Desktop $ touch first_file.txt

包含文件扩展名(在以上示例中是.txt)是至关重要的,因为它设置了文件类型。 运行上述命令,然后列出 Desktop 目录的内容,来确认确实创建了名为 first_file.txt 的文本文件。

使用 touch 命令在工作目录中创建一个文件

在工作目录以外的目录中创建文件

你也可以使用 touch 命令在其他目录而不是当前目录创建新文件。创建方法是在文件名前面 添加 通往文件存放位置的路径。例如,要在 Desktop 工作目录中,创建位于更深层的文件结构中的文件 capybara.txt,给定以下文件结构:

示例文件结构:

  • 主目录 ~ → Desktop 目录 → animals 目录 → rodents 目录 → capybara.txt 文件

要创建该文件,需要运行以下命令:

~/Desktop $ touch animals/rodents/capybara.txt

列出 rodents 目录的内容(在 ~/Desktop/animals/rodents)将会确认新文件 capybara.txt 的存在,如下所示:

使用 touch 命令,在不是工作目录的目录下创建文件。

创建多个文件

你可以通过提供多个文件名(包括任何适当的前置路径),以空格分隔,通过 touch 命令创建多个文件。例如,下面的代码将创建两个文件:

  • 一个文件叫做 kangaroo.txt 位于: ~ → Desktop → animals → marsupials
  • 另一个文件叫做 giraffe.txt 位于: ~ → Desktop → animals → cloven_hoofed_animals
~/Desktop $ touch animals/marsupials/kangaroo.txt animals/cloven_hoofed_animals/giraffe.txt
创建不同的文件类型

最后,请注意,使用 touch 命令不仅仅限于创建文本文件,你可以创建任何文件类型。例如,以下命令将在 Desktop 工作目录中创建一个名为 test.py 的 Python 文件:

~/Desktop $ touch test.py

删除目录和文件

在本节中,你将学习如何使用 rm 命令永久删除目录和文件。我们将从删除文件开始,因为它比删除目录要简单得多。

删除文件

rm 命令

你可以使用 rm 命令(意为删除 remove)删除指定的文件。请注意这个删除是永久的 —— 它不能被逆转。只有当你确定想删除某些东西时,才使用 rm

我们来看一个例子。如果要删除位于 Desktop 目录中的名为 first_file.txt 的文件,则可以运行以下命令:

~/Desktop $ rm first_file.txt

使用 rm 删除文件

删除多个文件可以通过提供以空格分隔的文件名列表来实现。例如,下面的图片演示中,我们使用 touch 命令在 Desktop 目录下创建三个文本文件 —— apples.txtcarrots.txt 和 fruits.txt —— 然后使用 rm 命令删除(永久删除)这些文件。完成此次删除的代码如下:

$ rm apples.txt carrots.txt fruits.txt`

使用 rm 删除多个文件

删除目录

你刚刚学习了如何使用 rm 命令删除文件。在这里,我们将讲授两种方式来删除目录:

  • 使用 rmdir 命令
  • 使用 rm -r 命令(注意:谨慎操作)
rmdir 命令

rmdir 命令可以用来删除目录,但是要注意,它只能删除空目录。例如,你可以使用 mkdir 在 Desktop 目录内创建一个名为 cats 的目录。因为 cats 只是一个空目录(没有添加任何东西),你可以使用 rmdir 命令删除 cats 目录,如下图所示。

使用 rmdir 删除一个  目录。

但是,如果你尝试在不为空的目录上运行 rmdir,则会收到一条错误消息。例如,如果你创建一个 cats 目录,然后向其中添加文件(例如 munchkin.txt 和 tabby.rb),那么你将无法使用 rmdir 删除 cats 目录,如下图所示。

错误信息 — rmdir 不能删除任何包含内容的目录。

一个潜在的解决方案是首先将目录的内容每次删除一个文件(使用上面学到的 rm 命令),然后使用 rmdir 删除空的目录,但如果目录包含很多文件,这可能很低效。下一节将展示更快的方法。

rm -r 命令

如上所述,使用 rmdir 删除目录有一些限制,因为它只能删除空目录。在这里,你将学习如何删除包括内容的目录,通过执行稍微不同版本的 rm,你之前用来删除文件的命令。

要删除目录,可以在 rm 命令中添加一个名为 flag(标记)或 option(选项)的内容。标记提供额外的执行指令,位于命令名和参数之间,用短划线符号(-)表示。我们将在本节中使用的完整命令是 rm -r,其中 r 代表 recursive(递归)。

警告: 在继续之前,你应该知道递归删除意味着删除目录的所有内容 —— 包括其文件、子目录以及这些子目录中的所有文件等等。此外,使用 rm -r 删除是一个永久的动作。你可以使用一行简单的代码不可逆地删除大量文件。

我们来看一个例子。如果要删除位于 Desktop 目录中的名为 cats 的非空目录,则可以使用以下命令:

~/Desktop $ rm -r cats

如果你想要被要求确认删除目录中包含的各个项目,则可以将 interactive(互动)-i 标记添加到命令中,或将其与 -r 标记结合(例如rm -ri)或通过单独添加(例如 rm -r -i)。举例来说,如果 cats 目录碰巧包含两个文件(file_1.txt 和 file_2.txt)和四个子目录(calicopersianscottish_fold 和 siamese),你可以使用以下命令,在确认要删除的几个内容后再删除 cats 目录:

~/Desktop $ rm -ri cats

要进行这些确认,你可以直接输入 yes 或 y。下图显示了这种互动。

使用 rm -ri 在确认内容后,删除一个非空目录。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值