创建目录,可一次补齐中间层级并直接指定最终权限。
mkdir 创建目录项,默认权限由 0666 与 umask 共同决定,目录还需要执行位才能进入。-p 会创建所有缺失的父目录,已存在的目录不报错;-m 直接指定最终目录的权限,-v 打印每个创建动作。
BSD 与 GNU 的差异:macOS 的 mkdir 没有 --parents、--mode、--verbose 长选项,脚本迁移时改成短选项。-m 只作用于最终目录,-p 补出来的中间目录仍按默认权限与 umask 创建;如果中间层需要收紧权限,创建后要单独 chmod。
macOS 目录还可能继承父目录的 ACL。ls -lde 目录 能看到 ACL 条目和 inherited 标记;chmod 的 file_inherit、directory_inherit 会决定新建子项是否自动带上权限。共享目录排错时不要只看 rwx。
# 一次创建多级目录,已存在也不报错
% mkdir -p ~/Projects/app/{src,tests,docs}
# 创建只有自己可访问的目录,常用于私钥和配置
% mkdir -m 700 ~/.ssh
% ls -ld ~/.ssh
# 显示创建过程,确认每个层级都落在正确位置
% mkdir -v ~/Backup/2026/10
# 目录名含空格时加引号
% mkdir -p "$HOME/My Projects/2026"
# 在外接卷上建立归档目录,先确认卷可写
% mkdir -p /Volumes/Archive/2026/10
# 查看目录 ACL 与继承标记
% mkdir -p ~/Shared/reports && ls -lde ~/Shared/reports
mkdir -p a/b 在 a 已存在且是普通文件时仍会失败,报 Not a directory。先用 ls -ld a 判断类型。-m 只设置最终目录,-p 创建的中间目录权限仍由 umask 决定;需要整条路径都受限时,逐级创建并逐级 chmod。umask 会改变默认结果,同一个脚本在不同用户下可能得到不同权限。脚本应显式 -m,不要依赖登录环境的 umask。sudo mkdir 也会报 Read-only file system 或 Operation not permitted;先确认挂载状态。- 开头会被当成选项,用 mkdir -- -name 或 mkdir ./-name。ls -lde 查看继承条目,而不是只改 chmod。chmod — 调整目录权限与 ACL。ls — 用 -lde 检查权限和继承。rm — 删除目录前先确认内容。mkdir — GNU 版对照,注意长选项。md — Windows CMD 的建目录命令。touch — 创建文件而不是目录。合上页面,先回答,再展开对照。
mkdir -p a/b/c 时,-m 700 会作用到哪一层?mkdir -p 在目标已存在时为什么不报错?什么情况下仍会失败?c,中间目录按默认权限和 umask 创建。Not a directory 失败。ls -lde 检查。
小程序版
微信扫码,随时查命令