在Linux操作系统中,建立文件夹目录(即创建目录)是日常管理和系统维护的基础操作,主要通过mkdir命令实现。mkdir是“make directory”的缩写,支持灵活的参数配置,能够满足单目录创建、多级嵌套目录创建、权限设置等需求,本文将详细介绍mkdir命令的使用方法、常用参数、高级技巧及常见问题解决,帮助用户全面掌握Linux目录创建操作。

mkdir命令基本语法
mkdir命令的基本语法结构为:
mkdir [选项] 目录名1 [目录名2 目录名3 ...]
“选项”用于控制目录创建的行为(如递归创建、权限设置等),“目录名”可以是单个目录名称,也可以是多个目录名称(用空格分隔),支持绝对路径(如/home/user/docs)或相对路径(如./docs)。
mkdir命令常用选项及说明
mkdir命令提供多个选项,以下是常用选项的功能及示例,通过表格形式清晰呈现:
| 选项 | 长选项 | 功能说明 | 示例 |
|---|---|---|---|
-p |
--parents |
递归创建目录,若父目录不存在则自动创建(避免报错),且不会覆盖已存在的目录 | mkdir -p /home/user/docs/notes |
-m |
--mode |
设置目录的权限(八进制数字或符号表示法),默认权限为755(所有者可读写执行,组用户和其他用户可读执行) | mkdir -m 700 private(设置所有者可读写执行,其他人无权限) |
-v |
--verbose |
显示目录创建的详细信息,包括每个成功创建的目录路径 | mkdir -v dir1 dir2 |
-Z |
--context |
设置目录的SELinux安全上下文(需系统开启SELinux) | mkdir -Z system_dirs |
mkdir命令基本用法示例
创建单个目录
在当前路径下创建一个名为test的目录:
mkdir test
执行后可通过ls命令查看,若当前路径无test目录,则创建成功;若已存在同名目录,会提示File exists(文件已存在)。
创建多个目录
同时创建dir1、dir2、dir3三个目录:
mkdir dir1 dir2 dir3
命令会依次尝试创建每个目录,若某个目录已存在,仅对该目录报错,其他目录仍会正常创建。

递归创建多级目录
若需创建嵌套目录(如parent/child/grandchild),直接使用mkdir parent/child/grandchild会报错(父目录parent不存在),需添加-p选项:
mkdir -p parent/child/grandchild
此命令会自动从parent开始逐层创建子目录,即使parent或child不存在也能成功执行,避免因父目录缺失导致的错误。
mkdir命令高级用法
结合路径创建目录
-
绝对路径创建:在系统指定位置创建目录,如
/home/user下创建projects目录:mkdir /home/user/projects
需注意,若当前用户非
root或user用户无权限,需添加sudo获取管理员权限(sudo mkdir /home/user/projects)。 -
相对路径创建:基于当前工作目录创建,如当前在
/home/user下,创建docs目录:mkdir ./docs # 或简写为 mkdir docs
批量创建目录(花括号展开)
Linux支持花括号展开功能,可快速创建有规律的目录名,
- 创建
dir1、dir2、dir3:mkdir dir{1,2,3} - 创建连续编号目录(如
log01到log10):mkdir log{01..10} - 创建多级批量目录(如
project下的src、bin、doc):mkdir -p project/{src,bin,doc}
设置目录权限
通过-m选项可自定义目录权限,避免依赖默认权限,权限用八进制数字表示,含义如下:

4:读权限(r)2:写权限(w)1:执行权限(x)
组合示例:700:所有者可读写执行,组用户和其他用户无权限(仅所有者可访问):mkdir -m 700 private_dir
755:所有者读写执行,组用户和其他用户读执行(默认权限):mkdir -m 755 public_dir
rwxr-x---:符号表示法(与750等效):mkdir -m "rwxr-x---" restricted_dir
常见问题及解决
报错“Permission denied”(权限不足)
原因:目标路径所在目录的权限不足,或当前用户非目录所有者。
解决:
- 若目标路径为系统目录(如
/usr/local),需用sudo获取管理员权限:sudo mkdir /usr/local/myapp
- 若当前用户对父目录无写权限,可修改父目录权限(需谨慎,避免安全风险):
chmod u+w /home/user # 给当前用户添加父目录的写权限 mkdir /home/user/newdir
报错“File exists”(文件已存在)
原因:尝试创建的目录名与现有目录或文件重名。
解决:
- 检查目录是否存在:
ls -l | grep 目录名
- 若确认需覆盖,需先删除现有目录(非空目录需用
rm -r删除):rm -r existing_dir # 删除现有目录及其内容 mkdir existing_dir # 重新创建
- 或使用
-p选项避免报错(若目录已存在,mkdir -p不会报错也不会覆盖):mkdir -p existing_dir
相关问答FAQs
问题1:如何一次性创建多个不同层级的目录,例如同时创建a/b/c和x/y/z两个嵌套目录?
解答:使用mkdir -p选项结合花括号展开,可批量创建多级嵌套目录。
mkdir -p a/b/c x/y/z
此命令会同时创建a/b/c和x/y/z两个三级嵌套目录,若父目录a或x不存在,会自动递归创建。
问题2:创建目录时如何设置特定权限,并确保后续新建的子目录自动继承该权限?
解答:mkdir命令的-m选项仅设置当前目录的权限,子目录权限需单独设置,若需让子目录自动继承父目录权限,可通过setgid位实现(需配合权限设置)。
- 创建目录并设置
setgid位(使子目录继承父目录的组权限)和775权限:mkdir -m 2775 shared_dir # 2表示setgid位
- 后续在
shared_dir下创建子目录时,子目录会自动继承setgid位和775权限(需确保父目录所有组与用户组一致)。
注意:setgid位主要用于组权限继承,普通用户若需统一权限管理,建议通过文件系统权限(如ACL)实现。
用户已可掌握Linux中创建目录的核心方法,从基础操作到高级技巧均能灵活应用,满足日常管理和开发需求。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/29328.html