1. 命令概述
- 命令名称:
mkdir(英文全拼:make directory) - 核心功能:创建目录
- 主要用途:在指定位置创建新目录
- 特点:支持创建单个目录、多级目录、设置权限等
2. 语法格式
mkdir [选项] [目录名]
3. 常用选项
| 选项 | 说明 |
|---|---|
-p | 递归创建目录,如果父目录不存在则一并创建 |
-m | 设置目录权限,类似 chmod |
-v | 显示创建目录的详细信息 |
-Z | 设置SELinux安全上下文 |
--help | 显示帮助信息 |
--version | 显示版本信息 |
4. 基本操作
(1) 创建单个目录
# 创建单个目录
mkdir dirname
# 创建目录并显示详细信息
mkdir -v dirname
# 创建目录并设置权限
mkdir -m 755 dirname
# 创建目录并设置权限,显示详细信息
mkdir -m 755 -v dirname
(2) 创建多级目录
# 创建多级目录
mkdir -p dir1/dir2/dir3
# 创建多级目录并显示详细信息
mkdir -p -v dir1/dir2/dir3
# 创建多级目录并设置权限
mkdir -p -m 755 dir1/dir2/dir3
# 创建多级目录并设置权限,显示详细信息
mkdir -p -m 755 -v dir1/dir2/dir3
(3) 创建多个目录
# 创建多个目录
mkdir dir1 dir2 dir3
# 创建多个目录并显示详细信息
mkdir -v dir1 dir2 dir3
# 创建多个目录并设置权限
mkdir -m 755 dir1 dir2 dir3
# 创建多个目录并设置权限,显示详细信息
mkdir -m 755 -v dir1 dir2 dir3
(4) 创建带权限的目录
# 创建只读目录
mkdir -m 444 dirname
# 创建可读写目录
mkdir -m 666 dirname
# 创建可执行目录
mkdir -m 755 dirname
# 创建只读目录,显示详细信息
mkdir -m 444 -v dirname
# 创建可读写目录,显示详细信息
mkdir -m 666 -v dirname
# 创建可执行目录,显示详细信息
mkdir -m 755 -v dirname
5. 常用实例详解
(1) 基本目录创建示例
# 创建单个目录
mkdir test
# 输出:创建目录test
# 创建多个目录
mkdir dir1 dir2 dir3
# 输出:创建目录dir1、dir2、dir3
# 创建多级目录
mkdir -p project/src/main/java
# 输出:创建目录project/src/main/java
# 创建目录并显示详细信息
mkdir -v logs
# 输出:mkdir: 已创建目录 'logs'
# 创建目录并设置权限
mkdir -m 755 config
# 输出:创建目录config,权限为755
# 创建目录并设置权限,显示详细信息
mkdir -m 755 -v config
# 输出:mkdir: 已创建目录 'config'
(2) 多级目录创建示例
# 创建多级目录
mkdir -p /tmp/project/src/main/java
# 输出:创建目录/tmp/project/src/main/java
# 创建多级目录并显示详细信息
mkdir -p -v /tmp/project/src/main/java
# 输出:
# mkdir: 已创建目录 '/tmp/project'
# mkdir: 已创建目录 '/tmp/project/src'
# mkdir: 已创建目录 '/tmp/project/src/main'
# mkdir: 已创建目录 '/tmp/project/src/main/java'
# 创建多级目录并设置权限
mkdir -p -m 755 /tmp/project/src/main/java
# 输出:创建目录/tmp/project/src/main/java,权限为755
# 创建多级目录并设置权限,显示详细信息
mkdir -p -m 755 -v /tmp/project/src/main/java
# 输出:
# mkdir: 已创建目录 '/tmp/project'
# mkdir: 已创建目录 '/tmp/project/src'
# mkdir: 已创建目录 '/tmp/project/src/main'
# mkdir: 已创建目录 '/tmp/project/src/main/java'
(3) 权限设置示例
# 创建只读目录
mkdir -m 444 readonly
# 输出:创建目录readonly,权限为444
# 创建可读写目录
mkdir -m 666 readwrite
# 输出:创建目录readwrite,权限为666
# 创建可执行目录
mkdir -m 755 executable
# 输出:创建目录executable,权限为755
# 创建只读目录,显示详细信息
mkdir -m 444 -v readonly
# 输出:mkdir: 已创建目录 'readonly'
# 创建可读写目录,显示详细信息
mkdir -m 666 -v readwrite
# 输出:mkdir: 已创建目录 'readwrite'
# 创建可执行目录,显示详细信息
mkdir -m 755 -v executable
# 输出:mkdir: 已创建目录 'executable'
(4) 批量目录创建示例
# 创建多个目录
mkdir dir1 dir2 dir3
# 输出:创建目录dir1、dir2、dir3
# 创建多个目录并显示详细信息
mkdir -v dir1 dir2 dir3
# 输出:
# mkdir: 已创建目录 'dir1'
# mkdir: 已创建目录 'dir2'
# mkdir: 已创建目录 'dir3'
# 创建多个目录并设置权限
mkdir -m 755 dir1 dir2 dir3
# 输出:创建目录dir1、dir2、dir3,权限为755
# 创建多个目录并设置权限,显示详细信息
mkdir -m 755 -v dir1 dir2 dir3
# 输出:
# mkdir: 已创建目录 'dir1'
# mkdir: 已创建目录 'dir2'
# mkdir: 已创建目录 'dir3'
# 创建多个多级目录
mkdir -p project1/src project2/src project3/src
# 输出:创建目录project1/src、project2/src、project3/src
# 创建多个多级目录并显示详细信息
mkdir -p -v project1/src project2/src project3/src
# 输出:
# mkdir: 已创建目录 'project1'
# mkdir: 已创建目录 'project1/src'
# mkdir: 已创建目录 'project2'
# mkdir: 已创建目录 'project2/src'
# mkdir: 已创建目录 'project3'
# mkdir: 已创建目录 'project3/src'
6. 实际应用场景
场景一:项目目录结构创建
# 创建标准Java项目目录结构
mkdir -p project/src/main/java
mkdir -p project/src/main/resources
mkdir -p project/src/test/java
mkdir -p project/src/test/resources
mkdir -p project/target/classes
mkdir -p project/target/test-classes
# 创建Web项目目录结构
mkdir -p webapp/WEB-INF/classes
mkdir -p webapp/WEB-INF/lib
mkdir -p webapp/META-INF
mkdir -p webapp/css
mkdir -p webapp/js
mkdir -p webapp/images
# 创建Python项目目录结构
mkdir -p python_project/src
mkdir -p python_project/tests
mkdir -p python_project/docs
mkdir -p python_project/data
mkdir -p python_project/logs
场景二:日志和配置目录创建
# 创建日志目录
mkdir -p /var/log/myapp
mkdir -p /var/log/myapp/access
mkdir -p /var/log/myapp/error
mkdir -p /var/log/myapp/debug
# 创建配置目录
mkdir -p /etc/myapp
mkdir -p /etc/myapp/conf.d
mkdir -p /etc/myapp/ssl
# 创建数据目录
mkdir -p /var/lib/myapp
mkdir -p /var/lib/myapp/data
mkdir -p /var/lib/myapp/backup
# 创建临时目录
mkdir -p /tmp/myapp
mkdir -p /tmp/myapp/cache
mkdir -p /tmp/myapp/sessions
场景三:用户目录创建
# 创建用户主目录
mkdir -p /home/username
mkdir -p /home/username/Documents
mkdir -p /home/username/Downloads
mkdir -p /home/username/Pictures
mkdir -p /home/username/Music
mkdir -p /home/username/Videos
# 创建用户配置目录
mkdir -p /home/username/.config
mkdir -p /home/username/.cache
mkdir -p /home/username/.local
mkdir -p /home/username/.ssh
# 创建用户项目目录
mkdir -p /home/username/projects
mkdir -p /home/username/projects/python
mkdir -p /home/username/projects/java
mkdir -p /home/username/projects/web
场景四:系统目录创建
# 创建系统日志目录
mkdir -p /var/log/system
mkdir -p /var/log/system/audit
mkdir -p /var/log/system/security
mkdir -p /var/log/system/backup
# 创建系统配置目录
mkdir -p /etc/system
mkdir -p /etc/system/conf.d
mkdir -p /etc/system/scripts
mkdir -p /etc/system/cron.d
# 创建系统数据目录
mkdir -p /var/lib/system
mkdir -p /var/lib/system/data
mkdir -p /var/lib/system/backup
mkdir -p /var/lib/system/cache
# 创建系统临时目录
mkdir -p /tmp/system
mkdir -p /tmp/system/cache
mkdir -p /tmp/system/sessions
mkdir -p /tmp/system/temp
7. 与其他命令的区别
| 命令 | 特点 | 适用场景 |
|---|---|---|
mkdir | 创建目录 | 创建新目录 |
rmdir | 删除空目录 | 删除空目录 |
rm | 删除文件或目录 | 删除文件或目录 |
touch | 创建空文件 | 创建空文件 |
cp | 复制文件或目录 | 复制文件或目录 |
mv | 移动文件或目录 | 移动文件或目录 |
8. 注意事项
- 权限问题:需要对父目录有写权限才能创建目录
- 目录存在:如果目录已存在,会报错”File exists”
- 多级目录:使用
-p选项可以递归创建多级目录 - 权限设置:使用
-m选项可以设置目录权限 - 详细信息:使用
-v选项可以显示创建目录的详细信息
9. 常见问题解决
(1) 权限不足
# 错误:权限不足
mkdir /root/newdir # 报错:Permission denied
# 正确:使用sudo
sudo mkdir /root/newdir
# 正确:切换到有权限的目录
mkdir /tmp/newdir
# 正确:修改父目录权限
sudo chmod +w /path/to/parent
mkdir /path/to/parent/newdir
# 正确:使用当前用户的主目录
mkdir ~/newdir
(2) 目录已存在
# 错误:目录已存在
mkdir existing_dir # 报错:File exists
# 正确:检查目录是否存在
ls -d dirname
# 正确:使用不同的目录名
mkdir new_dir
# 正确:删除已存在的目录
rm -rf existing_dir
mkdir existing_dir
# 正确:忽略已存在的目录
mkdir -p existing_dir
(3) 父目录不存在
# 错误:父目录不存在
mkdir dir1/dir2/dir3 # 报错:No such file or directory
# 正确:使用-p选项递归创建
mkdir -p dir1/dir2/dir3
# 正确:先创建父目录
mkdir dir1
mkdir dir1/dir2
mkdir dir1/dir2/dir3
# 正确:检查父目录是否存在
ls -d dir1
# 正确:创建父目录
mkdir dir1
mkdir dir1/dir2/dir3
(4) 特殊字符处理
# 目录名包含空格
mkdir "dir with spaces"
# 目录名包含特殊字符
mkdir dir\ with\ spaces
# 目录名包含引号
mkdir 'dir with "quotes"'
# 目录名包含变量
mkdir "$HOME/newdir"
# 目录名包含命令替换
mkdir "$(date +%Y%m%d)"
核心要点总结:
mkdir是创建目录的命令,支持创建单个目录、多级目录、设置权限等- 常用选项:
-p(递归创建目录)、-m(设置目录权限)、-v(显示详细信息) - 实际应用:项目目录结构创建、日志和配置目录创建、用户目录创建、系统目录创建
- 注意事项:需要对父目录有写权限,目录已存在会报错,使用
-p选项可以递归创建多级目录
mkdir命令是Linux系统目录管理的基础工具,熟练掌握可以大大提高文件系统管理效率。