Linux mkdir 命令:创建目录

LinuxBeginner
立即练习

介绍

在本实验中,我们将探索 Linux 中的 mkdir 命令,这是创建和组织目录的基础工具。我们将模拟搭建一个「数字花园」(Digital Garden)——即个人知识管理系统——的过程,以此学习如何在各种场景下高效使用 mkdir。即使你完全没有命令行经验,这次实战演练也将帮助你理解 Linux 中的目录创建、嵌套结构以及权限设置。

创建你的数字花园根目录

让我们从为你的数字花园创建根目录开始。

首先,打开你的终端。你会看到类似这样的提示符:

labex:project/$

这表示你当前位于 /home/labex/project 目录,这正是我们进行实验的理想位置。

现在,让我们创建一个名为 digital_garden 的目录:

mkdir digital_garden

在这里,mkdir 代表「make directory」(创建目录)。该命令会在你当前所在的位置创建一个名为 digital_garden 的新文件夹。

为了验证目录是否已成功创建,我们将使用 ls 命令,它可以列出目录的内容:

ls

你应该能在输出中看到 digital_garden。如果没有看到,别担心!只需再次尝试执行 mkdir 命令即可。

添加主要分类

在数字花园中,你可能希望将想法整理到不同的主类别中。让我们为不同类型的内容创建目录。

我们将在 digital_garden 内部创建三个目录:「notes」(笔记)、「projects」(项目)和「resources」(资源)。你可以通过三条独立的命令来完成:

mkdir ~/project/digital_garden/notes
mkdir ~/project/digital_garden/projects
mkdir ~/project/digital_garden/resources

在这里,~/project/digital_garden/ 是我们数字花园的完整路径。~ 是一个快捷方式,代表「家目录」(home directory)。

要查看新的结构,请使用 ls 命令并带上数字花园的路径:

ls ~/project/digital_garden

你应该会看到列出的三个新目录:notesprojectsresources

如果你好奇这些目录的用途:

  • notes 可以存储零散的想法或每日反思。
  • projects 可能包含长期工作或研究课题。
  • resources 可以用来存放参考资料。

创建嵌套目录

通常,你会希望在目录中再创建目录,从而形成嵌套结构。-p 选项允许你根据需要自动创建父目录,这在构建深层结构时非常方便。

让我们为一个假设的 Web 应用项目创建一个嵌套结构:

mkdir -p ~/project/digital_garden/projects/web_app/src/components

这条命令一次性完成了多项操作:

  • projects 内部创建了 web_app 文件夹。
  • web_app 内部创建了 src 文件夹。
  • 最后,在 src 内部创建了 components 文件夹。

-p 选项(可以理解为「parents」,即父目录)告诉 mkdir 在路径中任何部分不存在时自动创建它们。如果没有 -p,当路径中的某个中间目录不存在时,系统会报错。

要查看这个新结构,请使用带有 -R 选项的 ls 命令,它可以递归地显示内容:

ls -R ~/project/digital_garden/projects/web_app

你应该能看到展示出的嵌套目录结构。

设置目录权限

在创建目录时,你可以设置特定的权限。这对于控制谁可以访问、修改或执行目录内的文件非常有用。

让我们创建一个名为 private 的目录,并设置受限的权限:

mkdir -m 700 ~/project/digital_garden/private

以下是该命令的作用:

  • mkdir 创建目录。
  • -m 700 设置权限。
    • 7:所有者拥有读取、写入和执行权限。
    • 0:组用户没有任何权限。
    • 0:其他用户没有任何权限。

换句话说,只有你(所有者)可以访问这个目录。

要检查权限,请使用:

ls -ld ~/project/digital_garden/private

输出应该类似于:

drwx------ 2 labex labex 6 Aug  7 18:40 /home/labex/project/digital_garden/private

在这里,drwx------ 的含义是:

  • d:这是一个目录。
  • rwx:你(所有者)拥有读取(read)、写入(write)和执行(execute)权限。
  • ------:你的用户组和其他人都没有任何权限。

使用详细模式

在创建多个目录时,详细模式(Verbose mode)非常有用,因为它会为每个创建动作提供反馈。当你一次性创建许多目录并希望确保它们都已正确创建时,这尤其有帮助。

让我们在详细模式下创建几个目录:

mkdir -v ~/project/digital_garden/resources/books ~/project/digital_garden/resources/articles ~/project/digital_garden/resources/videos

-v 选项代表「verbose」。它告诉 mkdir 为创建的每个目录打印一条消息。

你应该会看到类似这样的输出:

mkdir: created directory '/home/labex/project/digital_garden/resources/books'
mkdir: created directory '/home/labex/project/digital_garden/resources/articles'
mkdir: created directory '/home/labex/project/digital_garden/resources/videos'

这种反馈在编写复杂的脚本或进行故障排除时非常有价值。

组合选项

你可以将 mkdir 的多个选项组合使用。这允许你通过一条命令创建复杂的结构,并同时设置特定权限和开启详细输出。

让我们为一个假设的研究论文项目创建一个具有受限权限的嵌套结构:

mkdir -pvm 750 ~/project/digital_garden/projects/research_paper/drafts ~/project/digital_garden/projects/research_paper/references

让我们分解一下:

  • -p:根据需要创建父目录。
  • -v:详细模式,为每个创建的目录打印消息。
  • -m 750:设置权限(所有者:完全访问;组:读取和执行;其他人:无访问权限)。

这条命令在 research_paper 内部创建了两个目录(draftsreferences),如果 research_paper 本身在 projects 中不存在,也会被一并创建。

检查结构和权限:

ls -lR ~/project/digital_garden/projects/research_paper

你应该能看到带有指定权限(drwxr-x---)的嵌套目录。

使用 tree 命令可视化你的数字花园

现在我们已经创建了数字花园的结构,让我们使用 tree 命令来将其可视化。tree 命令以树状格式显示目录结构,既直观又清晰。

现在,让我们使用 tree 查看数字花园的结构:

tree ~/project/digital_garden

你应该会看到类似这样的输出:

/home/labex/project/digital_garden
|-- notes
|-- private
|-- projects
|   |-- research_paper
|   |   |-- drafts
|   |   `-- references
|   `-- web_app
|       `-- src
|           `-- components
`-- resources
    |-- articles
    |-- books
    `-- videos

13 directories, 0 files

这个树状结构让我们对数字花园一目了然。我们可以看到创建的所有目录,包括嵌套的结构。

如果你想查看更多细节,包括我们设置的权限,可以给 tree 加上 -p 选项:

tree -p ~/project/digital_garden

这将显示每个目录的权限,如下所示:

[drwxrwxr-x]  /home/labex/project/digital_garden
|-- [drwxrwxr-x]  notes
|-- [drwx------]  private
|-- [drwxrwxr-x]  projects
|   |-- [drwxrwxr-x]  research_paper
|   |   |-- [drwxr-x---]  drafts
|   |   `-- [drwxr-x---]  references
|   `-- [drwxrwxr-x]  web_app
|       `-- [drwxrwxr-x]  src
|           `-- [drwxrwxr-x]  components
`-- [drwxrwxr-x]  resources
    |-- [drwxrwxr-x]  articles
    |-- [drwxrwxr-x]  books
    `-- [drwxrwxr-x]  videos

13 directories, 0 files

这种视觉呈现是验证我们是否按预期创建了所有目录、结构和权限是否正确的绝佳方式。

这一步为我们的实验提供了一个圆满的总结,让我们看到了亲手构建的完整架构。tree 命令不仅在本次练习中有用,在你未来的 Linux 探索中,它也是导航和理解目录结构的重要工具。

总结

在本实验中,我们通过模拟创建数字花园,探索了 Linux 中 mkdir 命令的多功能性。我们学习了如何:

  1. 创建单个目录
  2. 一次性创建多个目录
  3. 使用 -p 选项创建嵌套目录结构
  4. 使用 -m 选项在创建目录时设置特定权限
  5. 使用详细模式 -v 获取操作反馈

我们还了解了如何组合这些选项来执行更复杂的操作。

虽然在练习中没有涉及,但 mkdir 还有一些在特定情况下非常有用的额外参数:

  • -Z:将每个创建的目录的 SELinux 安全上下文设置为默认类型。
  • --context[=CTX]:类似于 -Z,或者如果指定了 CTX,则将 SELinux 或 SMACK 安全上下文设置为 CTX。
  • --help:显示帮助信息并退出。
  • --version:输出版本信息并退出。

这些技能是在 Linux 环境中高效组织文件系统的基础。请记住,虽然我们是以数字花园为例,但这些技术适用于任何你需要在 Linux 中创建和管理目录结构的场景。随着你 Linux 学习之旅的深入,你会发现 mkdir 是组织文件和项目不可或缺的工具。