Linux mkdir 命令:目录创建

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在本实验中,我们将探索 Linux 中的 mkdir 命令,这是一个用于创建和组织目录的基本工具。我们将模拟搭建一个数字花园(个人知识管理系统)的过程,以学习如何在不同场景中有效使用 mkdir。通过这个动手实践,即使你完全不了解命令行,也能理解 Linux 中的目录创建、嵌套结构以及权限设置。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/PackagesandSoftwaresGroup(["Packages and Softwares"]) linux/BasicSystemCommandsGroup -.-> linux/tree("Directory Tree Display") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/FileandDirectoryManagementGroup -.-> linux/pwd("Directory Displaying") linux/FileandDirectoryManagementGroup -.-> linux/mkdir("Directory Creating") linux/PackagesandSoftwaresGroup -.-> linux/apt("Package Handling") subgraph Lab Skills linux/tree -.-> lab-209739{{"Linux mkdir 命令:目录创建"}} linux/ls -.-> lab-209739{{"Linux mkdir 命令:目录创建"}} linux/cd -.-> lab-209739{{"Linux mkdir 命令:目录创建"}} linux/pwd -.-> lab-209739{{"Linux mkdir 命令:目录创建"}} linux/mkdir -.-> lab-209739{{"Linux mkdir 命令:目录创建"}} linux/apt -.-> lab-209739{{"Linux mkdir 命令:目录创建"}} end

创建你的数字花园根目录

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

首先,打开你的终端。你会看到一个类似以下的提示符:

labex:project/$

这表示你当前位于 /home/labex/project 目录下,这对我们的实验来说非常合适。

接下来,我们创建一个名为 digital_garden 的目录:

mkdir digital_garden

在这里,mkdir 是 "make directory" 的缩写。这条命令会在当前目录下创建一个名为 digital_garden 的新文件夹。

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

ls

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

添加主要部分

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

我们将在 digital_garden 目录下创建三个子目录:notesprojectsresources。你可以通过以下三条命令来完成:

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

在这里,~/project/digital_garden/ 是数字花园的完整路径。~ 是一个快捷方式,表示“主目录”。

要查看新的目录结构,可以使用 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:你(所有者)具有读、写和执行权限
  • ------:你的组和其他人都没有任何权限

使用详细模式

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

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

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 是组织和整理文件和项目时不可或缺的工具。

资源