系统学习 macOS 学习路径:从 BSD 文件命令到系统、网络与开发维护

mkdir

创建目录,可一次补齐中间层级并直接指定最终权限。

补充说明

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

易错点与排错

相关命令

参考链接

读完自测

合上页面,先回答,再展开对照。

  1. mkdir -p a/b/c 时,-m 700 会作用到哪一层?
  2. mkdir -p 在目标已存在时为什么不报错?什么情况下仍会失败?
  3. 为什么新建目录看起来是 755,别人却仍然写不进去?
答案
  1. 只作用于最终目录 c,中间目录按默认权限和 umask 创建。
  2. 已存在目录视为成功;若同名路径是普通文件,仍会因 Not a directory 失败。
  3. 可能继承了父目录的 ACL 或缺少父目录写权限,用 ls -lde 检查。
微信小程序码:扫码打开命令速查小程序

小程序版

微信扫码,随时查命令