跳转到内容

mkdir

mkdir(make directory)用于创建目录。默认只建一层:父目录不存在会失败,目录已存在也会失败。

Terminal window
mkdir [选项] 目录...

可以一次给多个目录名,逐个创建 新目录的权限是 0777 减去 umask,常见的 umask 是 022,于是得到 755

选项 说明
-p 需要时把缺失的父目录一起建出来(parents),且目录已存在时不报错
-m <权限> 指定新目录的权限(mode),不受 umask 影响
-v 每建一个打印一行(verbose)

1. 一次建出多层

Terminal window
mkdir a/b/c # a 不存在就失败:No such file or directory
mkdir -p a/b/c # a、b、c 依次建出来

-p 还有个常被当成主要用途的副作用:目录已经存在时它返回成功而不是报错 所以脚本里可以无条件写 mkdir -p "$dir",不用先判断存不存在

2. 一次建多个平行目录

Terminal window
mkdir -p project/{src,tests,docs}

花括号是 shell 展开的,mkdir 收到的是三个独立的路径,见 glob

3. 指定权限

Terminal window
mkdir -m 700 private

不带 -m 时权限受 umask 影响,-m 直接定死 -m 只作用于最后那一层,-p 顺带建出的父目录仍按 umask 来

4. 建完就进去

Terminal window
mkdir -p build && cd build

mkdir 不会改变工作目录,两条命令得串起来