mkdir是Make Directory的缩写,该命令在 Linux 中用于创建目录(单层或多层),在Linux中很常用,可以说是基础性命令。该命令支持:1)创建单层或多层目录2)直接指定目录权限。本文详细介绍了mkdir命令的各种用法。
mkdir是Make Directory的缩写,该命令是 Linux 中用于创建目录(单层或多层)的核心命令,在Linux中很常用,也可以说是基础性命令。
该命令能够:1)支持创建单层或多层目录:能自动创建缺失的父目录(-p 选项)。2)设置权限:使用-m 选项直接指定目录权限。3)冗余输出:借助-v 选项显示创建过程。
一、使用语法
mkdir [选项] 目录名...
支持多目录创建,目录名可以是多个:可同时创建多个目录(例如 mkdir dir1 dir2)。
脚本化操作:常与 Shell 循环、变量结合使用。
欢迎关注工 众 号:ItBeeCoder,查看更多Linux、Java、MySQL等的技术文章,发送“ds”获取 deepseek 资 料
二、常用的选项参数
-p:该选项支持递归创建父目录(自动忽略已存在的目录),如 /a/b/c -m :设置目录权限(八进制或符号模式),创建需特定权限的目录(如日志目录) -v:显示创建过程(Verbose 模式),调试或查看操作细节时会用到该选项 -Z:设置 SELinux 安全上下文(需系统支持),这个选项常用于安全敏感环境(如容器或加固系统)
三、用法示例
1、创建单层目录
mkdir dir1 # 创建单个目录
mkdir aaa bbb ccc # 同时创建多个目录aaa、bbb、ccc
2、递归创建目录(-p 选项)
mkdir -p project/{src,logs,tmp} # 创建多级目录(使用花括号扩展)
可以看到在当前目录下递归创建了两层目录。
mkdir -p data/2024/{jan,feb,mar} # 嵌套目录结构
- 自动处理路径缺失:若 当前目录下project 不存在,自动创建父目录。
- 静默忽略错误:若目录已存在,不报错(适合脚本自动化)。
欢迎关注工 众 号:ItBeeCoder,查看更多Linux、Java、MySQL等的技术文章,发送“ds”获取 deepseek 资 料
3. 指定目录权限(-m 选项)
mkdir -m 750 private_project
从以上输出结果中可以看到创建的private_project的 权限为 drwxr-x—(所有者user:rwx,组group:r-x,其他:无)
mkdir -m u=rwx,g=rx,o= secret # 符号模式设置权限(同 750)
- 优先级高于 umask:直接覆盖系统默认权限。
- 常用场景:创建 Web 服务器的可写目录(如 755)、敏感数据目录(如 700)。
这里涉及到了目录的权限,后面我会在介绍chmod命令的文章里专门对Linux系统中目录和文件的权限进行介绍。
4、显示操作详情(-v 选项)
mkdir -vp /var/log/app/{debug,error}
输出:
# mkdir: created directory '/var/log/app'
# mkdir: created directory '/var/log/app/debug'
# mkdir: created directory '/var/log/app/error'
5、结合 Shell 特性批量创建
使用序列生成目录名(如 dir01 ~ dir10)
mkdir -p dir{01..10}
根据列表动态创建目录
for user in alice bob charlie; domkdir -p /home/$user/{documents,downloads}
done
6、在项目中构建复杂目录树:创建项目目录结构
mkdir -p my_project/{src/{main,test},docs,config,logs}
最终输出的项目架构为:
my_project/
├── src/
│ ├── main/
│ └── test/
├── docs/
├── config/
└── logs/
7、 创建临时目录(结合 mktemp)
TMPDIR=$(mktemp -d) # 生成唯一临时目录路径
mkdir -p $TMPDIR # 确保临时目录存在
8、使用mkdir 命令修复缺失的目录结构
例如:检查并补全日志目录(忽略已存在的目录)
mkdir -p /var/log/app/{debug,error} || true
mkdir 命令也可搭配其他命令一起使用,比如搭配find命令,dollar符号等,具体如下面9-12所示。
9、结合 find 命令重建目录
例如:从文件路径列表中提取目录并重建(例如备份恢复)
find /backup -type f | sed 's/\/[^/]*$//' | xargs -I{} mkdir -p {}
10、创建目录并立即进入
mkdir -p /tmp/myproject && cd $_
上述命令中的 $_ 表示上一个命令的参数
11、 批量创建并设置权限
mkdir -p {public,private}_{data,logs}
find . -type d -name "*private*" -exec chmod 700 {} \;
12、模拟树状结构显示
mkdir -p a/{b,c/{d,e},f} && tree a
递归创建目录并在控制台打印出目录的树状结构。