mkdir -p 是创建多级目录最常用方式,可自动补全缺失父目录;支持大括号批量生成规则结构;含空格或特殊字符需加双引号;需显式用 -m 设置权限以避免 umask 干扰。

mkdir -p 是 Linux 中创建多级目录最常用也最稳妥的方式,它能自动补全路径中所有缺失的父目录,无需逐层手动执行。
用一条命令建完整路径
只要路径中任意上级目录不存在,普通 mkdir 就会报错;而加 -p 后,命令会从根到末逐级检查并创建。
例如:
mkdir -p src/main/java/com/example/app
这条命令会依次创建 src、src/main、src/main/java……直到最深层的 app 目录。哪怕当前是空目录,也能一次到位。
批量生成规律性结构用大括号展开
当多个目录命名有规则(无空格、无特殊字符),可用 {a,b,c} 语法简化输入:
mkdir -p project/{src/{main,test},docs,config,scripts}等效于创建:
-
project/src/main -
project/src/test -
project/docs -
project/config -
project/scripts
⚠️ 注意:大括号内不能有空格,如 {src, test} 会被解析成带前导空格的目录名,导致异常。
安全处理含空格或特殊字符的目录名
如果目录名含空格、括号、中文或 $ 等(如 user data、config (backup)、项目文档),必须用双引号包裹整个路径:
mkdir -p "user data" "config (backup)" "项目文档"
否则 shell 会把空格当作参数分隔符,命令直接失败。
显式设置权限避免 umask 干扰
默认权限由系统 umask 决定,不同环境可能不一致(比如本地是 0002,CI 是 0022),导致组写权限丢失。需要确定权限时,务必加 -m:
mkdir -p -m 755 deploy/{bin,etc,logs}
mkdir -p -m 700 .cache/private权限数字按“所有者/组/其他”三位设定,常见组合:
-
755:所有者可读写执行,组和其他人可读执行(适合公开目录) -
700:仅所有者可读写执行(适合私密目录) -
644:文件常用默认,但对目录无效(目录至少需执行位才能进入)
不复杂但容易忽略


















