Linux / 命令 / mkdir / 创建目录的命令
在 Linux 中,mkdir 是创建新目录的命令。要一次创建多级路径,请使用 -p,该命令允许在保留现有目录的同时创建任何缺失的父目录。
创建和检查目录
mkdir 是 make directory 的缩写。以下命令会在当前目录下创建一个名为 projects 的目录(如果该目录不存在),并检查结果。为了避免与现有数据混淆,请在空的练习目录中运行它。
pwd
mkdir projects
ls -ld projects
首先,使用 pwd 检查当前工作位置,然后检查 ls -ld 中是否显示了新目录信息。如果成功,mkdir 通常不会显示任何信息。如果已经存在具有相同名称的文件或目录,默认命令会显示错误。
相对路径基于当前位置,绝对路径则以 / 开头,例如 /home/user/projects,是从根目录指定的。请根据您的环境检查实际路径和访问权限。
同时创建父目录
以下命令会在必要的情况下创建所需的父目录。例如,如果在练习位置中不存在 work,它将按顺序创建 work、work/reports 和 work/reports/2024。
mkdir -p work/reports/2024
ls -ld work work/reports work/reports/2024
如果在没有 -p 的情况下运行 mkdir work/reports/2024,当父路径不存在时将会失败。仅仅添加 -p 并不会因为路径已经存在为目录而导致错误。它不会删除现有内容或更改已有目录的权限。
然而,如果路径中间有同名的普通文件,或者你没有父目录的必要权限,即使使用 -p 也可能会失败。请结合错误信息、退出状态和实际路径一起检查以确认成功。
多个目录和包含空格的名称
您可以使用空格分隔的名称来创建多个目录。以下是当当前目录中尚不存在这两个名称时的示例。
mkdir documents images
ls -ld documents images
如果名称本身包含空格,请将整个路径放在引号中,以作为单个名称传递。如果没有引号,shell 会在空格处拆分并将它们作为单独的参数传递。
mkdir "project files"
ls -ld "project files"
以连字符开头的名称可能会被解释为选项。例如,mkdir -- -archive 将名称放在 -- 之后,所以它不会被当作选项处理。
创建时请检查权限和结果
通常,新目录的默认权限受当前 shell 的 umask 和文件系统设置的影响。使用 umask 检查当前掩码,并使用 ls -ld 验证创建目录的实际权限。
你也可以使用 GNU mkdir 的 -m 选项设置新创建目录的权限。下面是一个示例:当 private 尚不存在时,授予所有者读、写和执行权限,并不给组和其他用户任何权限。
mkdir -m 700 private
ls -ld private
即使 -p 和 -m 一起使用,-m 也只会应用于命令行指定的新目录,而不会应用于自动创建的父目录。它也不会对已存在的目录应用新的权限。访问控制列表或文件系统策略可能会影响实际访问,因此请在必要的环境中检查结果。有关选项的详细行为,请参阅 GNU mkdir 手册。
创建失败时
- 已存在: 使用
ls -ld name检查现有项是文件还是目录。仅当您希望按原样使用现有目录时,-p才适用。 - 未找到父路径: 请检查路径的拼写和您当前的位置,然后决定是否可以使用
-p创建缺失的父目录。 - 权限被拒绝: 检查您是否具有父目录所需的写入和访问权限,如果需要,请向管理员申请权限。
在确认目录为空之后,您可以使用 rmdir 删除实践中创建的空目录。rmdir 通常不会删除非空目录。




