linux mkdir 是 Linux 核心基础命令,全称 make directory,作用就是新建文件夹目录,属于 POSIX 标准命令,所有主流发行版默认自带,写 shell 脚本 运维部署 项目初始化都会高频使用,最核心参数就是 - p,这个参数可以递归创建多级目录,同时父目录不存在的时候自动补全,目录已经存在也不会报错,是日常使用最多的功能,另外还可以在创建目录的时候直接设置权限 mode,也就是 - m 参数,新手经常踩坑,比如不加 - p 创建多层目录会报错,还有创建目录之后默认权限受 umask 影响,很多人不清楚这点,学习 mkdir 需要掌握基础语法 常用参数 实操案例 权限规则 常见报错排查。
基础语法
命令格式
mkdir [参数] 目录名称
基础示例
mkdir test
含义 在当前工作目录下,新建名为 test 的目录
常用参数对照表
| 参数 | 功能说明 | 使用场景 |
|---|---|---|
| -p | 递归创建多级目录,父目录不存在自动创建,目录已存在不报错 | 一次性创建多层嵌套文件夹 |
| -m | 创建目录同时指定权限模式,八进制数字 | 新建目录直接设置自定义权限 |
| -v | verbose,输出创建目录的详细提示信息 | 脚本调试,确认目录是否成功创建 |
| -Z | 设置 SELinux 安全上下文 | 开启 SELinux 的服务器环境 |
实操分步示例
基础单目录创建
mkdir data
当前目录生成 data 文件夹
递归创建多级目录 -p
mkdir -p /opt/project/logs/2026
如果 /opt/project 以及 logs 都不存在,会自动全部创建出来
如果不加 - p,中间父目录缺失,直接报错 No such file or directory
创建多个同级目录
mkdir dir1 dir2 dir3
一条命令同时创建多个平级目录,不用分开多次执行
创建目录同时指定权限 -m
mkdir -m 755 backup
新建 backup 目录,权限直接设置成 755,不受当前 umask 默认值影响
带详细输出 -v
mkdir -v newdir
终端会打印提示,类似 mkdir created directory 'newdir',适合脚本日志记录
权限重点知识点
不加 - m 的时候,新建目录默认权限 = 777 减去当前 shell 的 umask 值
举例 umask 是 022,那么新建目录默认权限就是 755
如果想要强制固定权限,必须使用 - m 参数,这个是 mkdir 非常重要的特性,很多初学者会混淆文件和目录默认权限,文件默认是 666 减 umask,目录是 777 减 umask
常见报错清单
1 No such file or directory 父目录不存在,没有加 - p 参数
2 File exists 目录已经存在,没有加 - p,mkdir 默认不允许重复创建同名目录
3 Permission denied 当前用户没有在目标路径写入权限,需要切换 root 或者修改父目录权限
4 路径错误 使用相对路径和绝对路径混淆,建议复杂路径优先写绝对路径
进阶使用要点
mkdir 支持通配符配合 shell 扩展,还可以结合脚本批量生成目录,比如循环批量创建日期目录,在日志归档 备份脚本里面非常常用,mkdir 是 shell 脚本初始化项目目录结构的首选命令,属于必须熟练掌握的基础命令。
【常见问题】
问题 1 linuxmkdir 也就是 mkdir 的 - p 参数作用是什么
回答 1 linuxmkdir 也就是 mkdir 的 - p 参数可以递归创建多级目录,父目录不存在会自动创建,并且目录已经存在的时候不会报错,是 linuxmkdir 最常用参数。
问题 2 linuxmkdir 创建目录默认权限由什么决定
回答 2 linuxmkdir 也就是 mkdir 如果不使用 - m 参数,新建目录默认权限由当前 shell 的 umask 决定,使用 - m 参数可以在 linuxmkdir 创建目录的时候直接指定八进制权限。
问题 3 linuxmkdir 创建同名目录会报错吗
回答 3 linuxmkdir 也就是 mkdir 默认情况下,如果目标目录已经存在会报 File exists 错误,加上 - p 参数之后,linuxmkdir 就不会因为目录已经存在而报错。
问题 4 linuxmkdir 能不能一条命令创建多个同级目录
回答 4 linuxmkdir 也就是 mkdir 支持一条命令后面跟多个目录名称,可以一次性创建多个同级目录,不需要重复执行 linuxmkdir 命令。
【免责申明】
本文 linuxmkdir 也就是 mkdir 命令详解基于 GNU coreutils 版本编写,不同系统版本参数细节可能有微小差异,执行 man mkdir 可以查看本机官方手册,内容仅用于 Linux 基础运维学习参考。


