linux的mkdir命令详解

📅 2026/7/21 9:18:21
linux的mkdir命令详解
Linux mkdir 命令超详细详解mkdirMake Directory是 Linux 系统中创建目录的唯一标准命令用于在文件系统中创建新的空目录。它支持递归创建多级目录、自定义权限、批量生成等功能是日常操作和脚本编写的基础核心命令。一、核心特点与基础语法核心特点支持递归创建多级目录无需逐层手动创建父目录可直接指定目录权限不受系统默认 umask 限制支持同时创建多个独立目录配合 Shell 扩展可批量生成带序列的目录树轻量高效仅创建空目录节点不写入任何用户数据基础语法bash运行mkdir [选项] 目录1 [目录2 目录3 ...]选项控制创建行为的参数目录名要创建的目录路径支持相对路径和绝对路径可同时指定多个目录名一次性完成批量创建默认行为只能创建单级目录父目录不存在时会直接报错目录权限由系统默认umask决定通常为 755不能创建已存在的目录会抛出 File exists 错误只能创建空目录不能用于创建普通文件二、核心必记参数表格参数含义最常用场景-p/--parents递归创建所有不存在的父目录已存在的目录不会报错创建多级目录90% 以上的复杂场景都需要-m MODE/--modeMODE创建目录时直接指定权限支持数字或符号权限创建需要特殊权限的敏感目录-v/--verbose显示详细的创建过程输出每个成功创建的目录调试批量创建、确认目录结构-Z CONTEXT/--contextCONTEXT创建目录时设置SELinux 安全上下文CentOS/RHEL 系统中创建 Web / 服务目录三、高频实战示例最常用场景1. 基础目录创建bash运行# 在当前目录创建名为 test 的目录 mkdir test # 创建绝对路径的系统目录 mkdir /home/user/projects # 创建隐藏目录以 . 开头 mkdir .config2. 同时创建多个独立目录bash运行# 一次性创建 dir1、dir2、dir3 三个目录 mkdir dir1 dir2 dir3 # 创建不同路径下的多个目录 mkdir /tmp/test1 /var/log/test2 /data/test33. 递归创建多级目录最常用⚠️ 不加 -p 会报错这是 mkdir 最容易踩的坑。bash运行# 错误父目录 a/b 不存在直接报错 mkdir a/b/c # 输出mkdir: cannot create directory ‘a/b/c’: No such file or directory # 正确自动创建所有不存在的父目录 mkdir -p a/b/c/d/e4. 创建目录时直接指定权限默认权限由 umask 决定通常为 755使用-m参数可以覆盖默认值bash运行# 创建权限为 777 的公共目录所有用户都有读写执行权限 mkdir -m 777 /tmp/public # 创建权限为 700 的私有目录只有所有者能访问 mkdir -m 700 /home/user/private # 使用符号权限创建 mkdir -m urwx,grx,orx /data/shared5. 显示详细创建过程bash运行# 显示每个创建的目录 mkdir -v dir1 dir2 dir3 # 输出 # mkdir: created directory dir1 # mkdir: created directory dir2 # mkdir: created directory dir3 # 递归创建时显示所有层级的目录 mkdir -pv a/b/c/d # 输出 # mkdir: created directory a # mkdir: created directory a/b # mkdir: created directory a/b/c # mkdir: created directory a/b/c/d6. 批量创建带序列的目录配合 Shell 大括号扩展一次性生成多个带数字或字母序列的目录bash运行# 创建 dir1 到 dir10 共 10 个目录 mkdir dir{1..10} # 创建 a 到 z 共 26 个目录 mkdir dir{a..z} # 创建带日期序列的备份目录 mkdir backup_{20260601..20260610}7. 一次性创建复杂目录树使用大括号扩展可以一键生成完整的项目目录结构这是 mkdir 最强大的用法之一bash运行# 一次性创建完整的 Python 项目目录结构 mkdir -p myproject/{ src/{ myproject, tests/{unit,integration,e2e} }, docs, scripts, data/{raw,processed,external}, config, examples }执行后会自动生成以下完整目录结构plaintextmyproject/ ├── src/ │ ├── myproject/ │ └── tests/ │ ├── unit/ │ ├── integration/ │ └── e2e/ ├── docs/ ├── scripts/ ├── data/ │ ├── raw/ │ ├── processed/ │ └── external/ ├── config/ └── examples/8. 创建带空格和特殊字符的目录目录名包含空格、分号、$ 等特殊字符时必须用引号括起来bash运行# 创建带空格的目录 mkdir My Documents # 创建带特殊字符的目录 mkdir dir;with;semicolons mkdir directory with spaces and $ymbols四、高级用法与技巧1. 结合 umask 设置默认目录权限系统默认的目录权限由 umask 值决定默认权限 777 - umask 值bash运行# 查看当前 umask 值 umask # 输出0022系统默认值 # 计算默认权限777 - 022 755rwxr-xr-x # 临时修改 umask新创建的目录权限将变为 775 umask 0002 # 永久修改添加到 ~/.bashrc 中 echo umask 0002 ~/.bashrc2. 创建目录并立即切换进入最常用的一行命令组合确保只有目录创建成功后才会进入bash运行# 创建 test 目录并进入 mkdir test cd test # 递归创建多级目录并进入 mkdir -p a/b/c cd a/b/c3. 脚本中安全创建目录-p参数会自动忽略已存在的目录不会报错是脚本中创建目录的标准写法bash运行# 无论 /data/logs 是否存在都会确保目录可用 mkdir -p /data/logs4. 设置 SELinux 安全上下文CentOS/RHEL 专用在启用 SELinux 的系统中创建服务目录时需要设置正确的安全上下文bash运行# 创建 Apache 网页根目录并设置正确的 SELinux 上下文 mkdir -Z system_u:object_r:httpd_sys_content_t:s0 /var/www/html/new_site五、避坑重点与最佳实践避坑重点忘记加 -p 创建多级目录这是最常见的错误创建任何超过一级的目录都必须加-p参数。权限问题创建目录需要对父目录有写权限和执行权限普通用户不能在/root、/etc等系统目录下创建目录-m参数指定的权限会完全覆盖 umask 值特殊字符需要引号目录名包含空格、分号、$ 等特殊字符时必须用单引号或双引号括起来。不能覆盖已存在的目录如果目录已存在mkdir 会报错除非使用-p参数-p 会静默忽略已存在的目录。目录名限制不能包含/字符路径分隔符不能包含空字符\0最大长度通常为 255 个字符最佳实践创建多级目录必加 -p养成使用mkdir -p的习惯即使是单级目录也不会有问题还能避免不必要的报错。脚本中必须使用 -p在 Shell 脚本中创建目录时始终使用mkdir -p确保目录不存在时创建存在时不中断脚本执行。敏感目录明确指定权限对于存放密码、密钥等敏感数据的目录使用-m 700明确设置权限避免默认权限带来的安全风险。批量创建使用大括号扩展代替多次执行 mkdir 命令使用大括号扩展一次性创建多个目录更高效更清晰。创建后立即进入用 使用mkdir dir cd dir的组合确保只有目录创建成功后才会切换目录。六、mkdir 与相关命令对比表格命令功能核心特点mkdir创建目录支持递归创建可指定权限rmdir删除目录只能删除空目录不能删除非空目录rm -r删除目录可以删除非空目录高危操作touch创建文件只能创建空文件不能创建目录七、常用组合速查表表格命令组合含义mkdir dir创建单个目录mkdir dir1 dir2 dir3同时创建多个目录mkdir -p a/b/c/d递归创建多级目录mkdir -m 700 private创建权限为 700 的私有目录mkdir -pv a/b/c递归创建并显示详细过程mkdir dir{1..10}创建 dir1 到 dir10 共 10 个目录mkdir -p project/{src,docs,tests}一次性创建项目基础目录mkdir test cd test创建目录并立即切换进入