mkdir 命令详解
概述
mkdir
(make directories)是用于创建目录的命令,可一次性创建一个或多个目录,仅当目录不存在时才会创建(避免重复创建报错,除非使用特定选项)。
命令格式
mkdir [选项]... 目录...
其中,目录
为要创建的目录路径(可指定多个,用空格分隔),[选项]
为可选参数(见下文详解)。
选项详解
选项 | 全称 | 说明 |
---|---|---|
-m MODE | --mode=MODE | 设置新目录的权限(类似 chmod 的权限模式),而非默认的 a=rwx - umask (默认权限为777减去当前umask值)。示例: -m 755 表示创建的目录权限为 rwxr-xr-x 。 |
-p | --parents | 若目录已存在,不报错;若需要创建多级目录(如 a/b/c ),会自动创建缺失的父目录(a 和 b )。示例: mkdir -p a/b/c 会依次创建 a 、a/b 、a/b/c (若均不存在)。 |
-v | --verbose | 为每个创建的目录打印一条消息(显示创建成功的路径)。 示例: mkdir -v dir1 dir2 会输出 mkdir: 已创建目录 'dir1' 和 mkdir: 已创建目录 'dir2' 。 |
-Z | 无 | 设置每个新创建目录的 SELinux 安全上下文为默认类型(仅在启用 SELinux 的系统中有效)。 |
--context[=CTX] | 无 | 类似 -Z ;若指定 CTX ,则将 SELinux 或 SMACK 安全上下文设置为 CTX (用于自定义安全上下文)。 |
--help | 无 | 显示帮助信息并退出。 |
--version | 无 | 输出版本信息并退出。 |
默认行为
若不指定任何选项,mkdir
仅创建指定的目录:
- 若目录已存在,会报错(
mkdir: 无法创建目录 'dir': 文件已存在
); - 若需创建多级目录(如
a/b/c
)且父目录(a
或b
)不存在,会报错(mkdir: 无法创建目录 'a/b/c': 没有那个文件或目录
); - 目录权限为默认值(
777 - umask
,通常用户目录默认权限为755
或700
,取决于系统配置)。
示例
-
创建单个目录
docs
:mkdir docs
-
同时创建多个目录
music
、videos
:mkdir music videos
-
创建多级目录
project/src/main
(自动创建缺失的父目录):mkdir -p project/src/main # 若 project 或 project/src 不存在,会自动创建
-
创建目录
test
并设置权限为rwx------
(700):mkdir -m 700 test
-
创建目录
logs
并显示创建信息:mkdir -v logs # 输出:mkdir: 已创建目录 'logs'
-
在 SELinux 系统中创建目录
data
并指定安全上下文为user_u:object_r:tmp_t:s0
:mkdir --context=user_u:object_r:tmp_t:s0 data
注意事项
- 长选项的必填参数(如
--mode=MODE
中的MODE
)对短选项(如-m MODE
)同样必填; -p
选项常用于脚本中,避免因目录已存在或父目录缺失导致脚本中断;- 权限设置(
-m
)需遵循chmod
的权限格式(如数字权限755
或符号权限u=rwx,g=rx,o=rx
); - SELinux/SMACK 相关选项(
-Z
、--context
)仅在对应安全机制启用的系统中有效,普通系统可忽略。