当前位置:首页>java>Shell编程中mkdir命令使用详解

Shell编程中mkdir命令使用详解

  • 2026-09-04 06:55:25
Shell编程中mkdir命令使用详解


Shell编程中mkdir命令使用详解

mkdir(Make Directory)是Shell中用于创建目录的基础命令。本文将深入讲解其使用方法、常用选项和实际应用场景。

一、基本语法

mkdir [选项] 目录名...

二、核心功能与选项

1. 基础用法 - 创建单个目录

# 创建名为"project"的目录mkdir project# 验证创建结果ls -ld project

2. 创建多个目录

# 一次性创建多个同级目录mkdir dir1 dir2 dir3# 使用大括号展开批量创建mkdir {backup,log,temp}

3. -p 选项 - 递归创建父目录

这是mkdir最常用的选项,可以创建多级嵌套目录:

# 创建多级目录结构(如果父目录不存在会自动创建)mkdir -p project/src/main/java# 同时创建多个嵌套目录mkdir -p dir1/sub1 dir1/sub2 dir2/sub1# 结合变量使用BASE_DIR="/opt/myapp"mkdir -p "$BASE_DIR/{bin,conf,logs,data}"

4. -m 选项 - 设置权限模式

创建目录时直接指定权限:

# 创建权限为755的目录mkdir -m 755 public_dir# 创建权限为700的私有目录mkdir -m 700 private_dir# 使用八进制或符号模式mkdir -m u=rwx,g=rx,o=rx shared_dir

5. -v 选项 - 显示详细信息

# 显示创建的每个目录mkdir -v newdir# 输出: mkdir: created directory 'newdir'# 结合-p选项显示所有创建的目录mkdir -pv a/b/c# 输出:# mkdir: created directory 'a'# mkdir: created directory 'a/b'# mkdir: created directory 'a/b/c'

三、高级用法与技巧

1. 创建带空格的目录名

# 使用引号mkdir"My Documents"# 使用转义字符mkdir My\ Documents

2. 创建当前日期目录

# 创建如 20260107 格式的目录mkdir"$(date +%Y%m%d)"# 创建带时间戳的目录mkdir"backup_$(date +%Y%m%d_%H%M%S)"

3. 批量创建编号目录

# 创建 dir1 到 dir10 共10个目录mkdirdir{1..10}# 创建带前导零的目录mkdirdir{01..10}

4. 在脚本中使用mkdir

#!/bin/bash# 创建项目目录结构的脚本PROJECT_NAME="myproject"mkdir -pv "$PROJECT_NAME"/{src,tests,docs,build}mkdir -pv "$PROJECT_NAME"/src/{main,utils}mkdir -pv "$PROJECT_NAME"/tests/{unit,integration}echo"项目目录结构创建完成!"tree "$PROJECT_NAME" 2>/dev/null || ls -R "$PROJECT_NAME"

5. 条件创建目录

# 仅当目录不存在时创建[ ! -d "temp_dir" ] && mkdir temp_dir# 或者使用-p选项(不会报错)mkdir -p temp_dir

四、常见错误与注意事项

1. 权限不足错误

# 错误示例mkdir /root/newdir  # 普通用户无法创建# 解决方案:使用sudo或切换目录sudomkdir /root/newdir

2. 目录已存在

# 不使用-p时会报错mkdir existing_dir  # mkdir: cannot create directory 'existing_dir': File exists# 解决方案:使用-p选项mkdir -p existing_dir  # 不会报错

3. 路径不是目录

# 如果同名文件已存在touch myfilemkdir myfile  # mkdir: cannot create directory 'myfile': File exists

五、实用场景示例

1. 快速搭建项目结构

mkdir -pv myapp/{cmd/{server,client},pkg/{auth,api},internal/config,web/static}

2. 按日期归档日志

LOG_DATE=$(date +%Y/%m/%d)mkdir -pv "/var/logs/app/$LOG_DATE"

3. 创建临时工作目录

TEMP_DIR=$(mktemp -d)  # 创建临时目录# 或者TEMP_DIR="/tmp/work_$$"mkdir -p "$TEMP_DIR"

六、总结

选项
说明
示例
-p
递归创建父目录
mkdir -p a/b/c
-m
设置权限模式
mkdir -m 755 dir
-v
显示创建过程
mkdir -v newdir

mkdir命令虽然简单,但配合适当的选项在脚本编程和日常使用中非常强大。掌握-p选项的递归创建功能,可以大大提高工作效率。


最佳实践建议:

  • • 在脚本中总是使用-p选项避免报错
  • • 使用-v选项在需要确认的场景
  • • 对敏感目录使用-m选项设置适当权限
  • • 目录名包含变量时务必加引号

Shell编程中的ps命令使用详解

Shell编程中ls命令使用详解

Shell编程中cd命令使用详解

Shell编程中touch命令使用详解

Shell编程中chmod命令使用详解

Shell编程中chown命令使用详解

Shell编程中rm命令使用详解

Shell编程中cp命令使用详解

点分享

点收藏

点点赞

点在看

最新文章

随机文章