在Linux系统中,目录是文件系统的基础结构,用于组织和管理文件,新建目录是日常操作中非常频繁的需求,而Linux系统提供了mkdir
(make directory)命令来实现这一功能,掌握mkdir
命令的用法,能更高效地管理文件系统,下面将详细介绍mkdir
命令的使用方法、常用选项及实际应用场景。
mkdir
命令基本语法
mkdir
命令的基本语法为:
mkdir [选项] 目录名...
选项
用于控制命令的行为(如递归创建、设置权限等),目录名
可以是单个目录,也可以是多个目录(用空格分隔)。
常用选项及说明
mkdir
命令支持多个选项,以下是常用选项的功能及示例:
选项 | 全称 | 说明 | 示例 |
---|---|---|---|
-p |
--parents |
递归创建目录,包括所需的父目录;若目录已存在则不报错 | mkdir -p test/a/b/c |
-m |
--mode |
设置目录的权限(八进制或符号表示) | mkdir -m 755 mydir |
-v |
--verbose |
显示创建目录的详细信息 | mkdir -v dir1 dir2 |
-Z |
--context |
设置目录的SELinux安全上下文 | mkdir -Z testdir |
实际应用场景
创建单个目录
最简单的用法是直接指定目录名,例如在当前路径下创建一个名为docs
的目录:
mkdir docs
若当前路径无写权限,会提示Permission denied
,需使用sudo
提权(如sudo mkdir docs
)。
创建多个目录
一次创建多个目录,只需将目录名用空格分隔:
mkdir docs pics downloads
执行后会在当前路径下同时创建docs
、pics
、downloads
三个目录。
递归创建嵌套目录
当需要创建多级嵌套目录(如project/src/code
)时,若父目录project
或src
不存在,直接使用mkdir project/src/code
会报错No such file or directory
,此时需用-p
选项递归创建:
mkdir -p project/src/code
-p
选项会自动检查并创建所需的父目录,且若目录已存在则不会重复创建或报错。
创建带权限的目录
默认情况下,新建目录的权限为755
(所有者可读/写/执行,组用户和其他用户可读/执行),若需自定义权限(如700
,仅所有者可访问),使用-m
选项:
mkdir -m 700 private
执行后,private
目录的权限为rwx------
,仅所有者可读写和进入。
显示创建过程
使用-v
选项可打印每个创建目录的详细信息,便于确认操作结果:
mkdir -v dir1 dir2 dir3
输出示例:
mkdir: created directory 'dir1'
mkdir: created directory 'dir2'
mkdir: created directory 'dir3'
结合通配符创建目录
若需批量创建有规律的目录(如dir1
、dir2
…dir10
),可结合通配符和for
循环:
mkdir dir{1..10}
或使用seq
命令生成数字序列:
mkdir $(seq -w 1 10) # 生成01-10两位数目录名
常见错误及解决方法
-
报错
Permission denied
原因:当前用户对目标路径无写权限。
解决:使用sudo
提权(如sudo mkdir /root/test
),或切换到有权限的用户(su - username
)。 -
报错
File exists
原因:目标目录已存在。
解决:若需忽略已存在目录,添加-p
选项(mkdir -p existing_dir
);或先删除目录(rm -r existing_dir
,注意谨慎操作)。 -
报错
No such file or directory
原因:父目录不存在(如mkdir a/b/c
时a
或b
不存在)。
解决:使用-p
选项递归创建(mkdir -p a/b/c
)。
相关问答FAQs
Q1:mkdir -p
和普通mkdir
有什么区别?
A:普通mkdir
只能创建单级目录,若父目录不存在会报错;mkdir -p
会递归创建多级目录(包括所有父目录),且若目录已存在则不会报错,更适合嵌套目录创建场景。
Q2:如何创建带空格的目录名(如my documents
)?
A:需用单引号或双引号将目录名括起来,避免空格被命令解析为分隔符:
mkdir "my documents" # 或使用单引号:mkdir 'my documents'
若未加引号,系统会尝试创建my
和documents
两个目录。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/30512.html