Linux mkdir 命令详解 🐧📁📂
学习目标 🎯
理解 mkdir 命令的基本功能与使用场景。
掌握创建目录的多种方式,包括一次性创建多级目录。
了解不同 Linux 发行版(如 Ubuntu、CentOS、EulerOS)在权限和默认行为上的差异。
能结合实际开发、运维、脚本编写等场景灵活运用 mkdir。
熟悉常见错误及解决方法。
核心重点 ✅
类别
内容
命令含义
make directory 创建目录
基本语法
mkdir [选项] 目录名
常用参数
-p, -m, -v
核心功能
- 创建单个或多个目录- 创建嵌套目录结构
权限控制
受文件系统权限限制,普通用户不能在 /root 或 /etc 下创建目录
跨平台差异
不同发行版对权限、默认 umask 设置略有差异
详细讲解 💡
1. 基本介绍 📘
📌 功能:
mkdir 是 make directory 的缩写,用于在 Linux 文件系统中创建新目录。它是文件管理中最基础但非常重要的命令之一。
📌 语法:
mkdir [选项] 目录名
📌 示例:
mkdir mydir # 创建一个名为 mydir 的目录
mkdir dir1 dir2 dir3 # 一次创建多个并列目录
2. 常用参数详解 🛠️
✅ -p:递归创建目录(最常用)
当你需要创建多层嵌套目录时,必须使用 -p 参数:
mkdir -p project/src/main/java
⚠️ 如果不加 -p,会提示:
mkdir: cannot create directory ‘project/src/main/java’: No such file or directory
📌 这个参数适用于:
初始化项目结构
自动化脚本中创建日志/缓存目录
✅ -m:设置目录权限(mode)
你可以直接在创建目录时指定权限模式:
mkdir -m 700 private_data # 权限为 drwx------
🔍 权限说明(数字表示法):
7 = rwx(读+写+执行)
6 = rw-
5 = r-x
4 = r--
⚠️ 注意:如果当前用户的 umask 设置为 022,则实际权限会被掩码影响。例如:
umask 022
mkdir newdir
# 实际权限是 drwxr-xr-x (755)
✅ -v:显示详细的创建过程(verbose)
mkdir -v dir1 dir2 dir3
输出示例:
mkdir: created directory 'dir1'
mkdir: created directory 'dir2'
mkdir: created directory 'dir3'
👀 应用:调试脚本时查看具体执行情况,适合初学者理解流程。
3. 实际应用场景 🏢
🧱 场景一:初始化项目目录结构(开发环境搭建)
mkdir -p myproject/{src,bin,lib,doc,logs}
这将创建如下结构:
myproject/
├── bin/
├── doc/
├── lib/
├── logs/
└── src/
👀 应用:快速构建标准项目结构,避免手动逐层创建。
🧱 场景二:自动化脚本中创建日志目录
#!/bin/bash
LOG_DIR="/var/log/myapp"
if [ ! -d "$LOG_DIR" ]; then
mkdir -p $LOG_DIR
fi
👀 应用:确保程序运行前有对应的日志路径,防止因目录不存在而崩溃。
🧱 场景三:创建临时测试目录
mkdir -p /tmp/testdata/{input,output}
👀 应用:测试数据处理流程时,快速构建输入输出路径。
4. 不同 Linux 发行版差异对比 🖥️🐧
对比项
Ubuntu
CentOS
EulerOS
默认 shell
bash
bash
bash
默认 umask
0022
0022
0022
是否支持 -p
✅
✅
✅
是否支持 -m
✅
✅
✅
是否支持 SELinux
❌(默认关闭)
✅(默认启用)
✅(默认启用)
root 用户权限限制
sudo 制度严格
su 更常见
政企级安全强化
⚠️ 小贴士:在生产环境中(如 EulerOS),创建目录时可能受 SELinux 或 AppArmor 等安全策略限制,需额外配置上下文标签或权限策略。
5. 常见问题与解决方案 ❗
❌ 错误 1:权限不足无法创建目录
mkdir: cannot create directory ‘/root/mydir’: Permission denied
原因:普通用户没有权限操作 /root 目录
解决:使用 sudo 提权:
sudo mkdir /root/mydir
❌ 错误 2:目录已存在
mkdir: cannot create directory ‘logs’: File exists
原因:目录已经存在
解决:
使用 -p 忽略该错误(不会报错)
或先检查是否存在再创建(建议用于脚本):
[ ! -d "logs" ] && mkdir logs
❌ 错误 3:路径中有空格或特殊字符
mkdir my folder
mkdir: cannot create directory ‘my’: File exists
解决:
mkdir "my folder" # 加引号
mkdir my\ folder # 转义空格
6. 小技巧 & 高效用法 🚀
Tab 补全:输入部分目录名后按 Tab 键自动补全。
历史记录:使用上下箭头键查看之前执行过的 mkdir 命令。
批量创建目录:
mkdir dir{1..10} # 创建 dir1 ~ dir10
mkdir {images,css,js} # 创建 images、css、js 三个目录
配合变量使用(脚本中):
BASE_DIR="/opt/app"
mkdir -p $BASE_DIR/{log,tmp,data}
7. 实战练习题 🧪
🔍 练习 1:
请写出以下命令的作用:
mkdir -p data/{in,out,err}
📝 答案:
创建 data/in, data/out, data/err 三个子目录,若父目录 data 不存在则自动创建。
🔍 练习 2:
编写一个脚本 create_project_dirs.sh,实现以下功能:
接收一个参数作为项目名称
创建该项目的目录结构:{src,bin,lib,doc,logs}
📝 答案:
#!/bin/bash
PROJECT_NAME=$1
if [ -z "$PROJECT_NAME" ]; then
echo "请提供项目名称!"
exit 1
fi
mkdir -p $PROJECT_NAME/{src,bin,lib,doc,logs}
echo "项目目录 $PROJECT_NAME 已创建完成!"
使用方法:
chmod +x create_project_dirs.sh
./create_project_dirs.sh myapp
总结 📋
mkdir 是 Linux 中最基础但极其实用的命令之一,尤其在项目初始化、脚本编写、自动化部署中扮演重要角色。通过掌握其各种参数、理解不同发行版之间的差异,并结合实际场景灵活使用,可以显著提升你的工作效率和系统掌控能力。
建议多与 cd, ls, rm, touch 等命令配合使用,形成完整的目录操作流程。