导读:本期聚焦于小伙伴创作的《linux中创建目录命令是什么?mkdir用法与常见参数详解》,敬请观看详情。想把项目文件按模块归类却总报“文件已存在”错误?mkdir作为Linux里最基础的目录创建指令,远不止敲个名字那么简单。它支持一次建多层嵌套目录、按权限掩码直接设访问限制、遇到重名时静默跳过而不中断脚本。不少人误以为只能单层建文件夹,结果写自动化部署时反复卡在路径不存在。其实用-p可递归生成,用-m能顺手赋权,配合-v还能看见每一步操作。弄清这些参数差异,既能少写判断逻辑,也能避免误建到系统关键路径,让服务器文件结构更清晰可控。

在Linux系统里,创建目录最常用也最标准的命令就是mkdir,它是make directories的缩写。无论是手动整理日志文件,还是写脚本批量生成环境目录,基本都绕不开它。理解mkdir的基础写法和参数组合,能帮你在服务器运维和开发部署中少踩很多坑。

linux中创建目录命令是什么?mkdir用法与常见参数详解

一、mkdir命令的基本用法

mkdir最简单的使用方式就是在命令后面直接跟上目录名。比如想在当前路径下新建一个叫test的文件夹,只需要执行下面这行命令。系统会在当前工作目录中生成一个空的test目录,如果当前用户对该路径有写权限,命令执行后不会有任何提示,这就代表创建成功了。

如果你想一次创建多个并列目录,也可以把名字用空格隔开写在后面。例如mkdir a b c会同时生成a、b、c三个文件夹。这种方式在初始化项目结构时很实用,比反复敲三次命令要高效得多。需要注意的是,如果这些名字里有一个已经存在且不是目录,命令就会报错并停止后续创建。

# 在当前目录创建单个目录
mkdir test

# 同时创建多个目录
mkdir config logs backup

# 查看创建结果
ls -l

二、递归创建多级目录:-p参数

实际开发中经常需要建一层套一层的目录,比如data/2024/raw这种结构。如果父目录data或2024不存在,直接mkdir data/2024/raw会报“没有那个文件或目录”的错误。这时候就要用到-p(parents)参数,它会自动把路径上缺失的父目录全部补建出来,不用你手动一层层去建。

另一个容易被忽略的好处是,当目标目录已经存在时,不加-p会报错退出,而加了-p则静默成功,不会中断你的shell脚本。所以在写自动化脚本时,统一用mkdir -p是更稳妥的写法。下面例子展示了如何用一条命令把整套层级建好。

# 递归创建多级目录,父目录不存在会自动创建
mkdir -p data/2024/raw

# 已存在时也不会报错
mkdir -p data/2024/raw

# 查看树状结构
ls -R data

三、创建时直接设置权限:-m参数

默认情况下,新建目录的权限由系统的umask值决定,一般是755。如果你希望目录建好就具备特定访问权限,比如只允许拥有者读写执行、其他人完全不能进,可以用-m(mode)参数在创建时直接赋值,而不用再单独跑一趟chmod。

这里的权限写法支持和chmod一样的八进制格式。例如mkdir -m 700 secret会生成一个只有当前用户能操作的目录。要注意的是,-m会忽略umask的影响,按你写的数字精确设权。在部署多用户共享环境或存放密钥的文件夹时,这个参数非常关键。

# 创建只有所有者能读写的目录
mkdir -m 700 secret

# 创建所有人可读可进的目录
mkdir -m 755 public

# 验证权限
ls -ld secret public

四、显示创建过程与错误排查

当用脚本批量建目录时,你可能希望看到每一步到底建了什么,方便后期排错,这时候可以加-v(verbose)参数。它会把每个实际创建的目录名打印到终端。如果配合-p使用,只会提示那些真正被新建出来的层级,已存在的就不会刷屏。

常见错误主要分两类:一是权限不足,比如在根目录随意建文件夹会报Permission denied,需要用sudo或切到有权限的路径;二是路径里有非法字符或拼写错误。建议先在测试目录试跑命令,确认结构符合预期再移到生产环境。下表列出了几个高频问题和处理方式。

现象原因解决办法
Permission denied当前用户对父目录无写权限更换路径或使用sudo
File exists目录已存在且未用-p加-p参数静默跳过
No such file or directory父目录缺失且未用-p加-p递归创建

五、在脚本中的实践建议

把mkdir写进部署脚本时,推荐始终使用mkdir -p组合,并在关键步骤后用-v输出日志,这样既能保证幂等性,也方便运维回溯。如果目录涉及敏感数据,紧跟着用-m锁好权限,别把赋权动作留到后面,避免时间窗口内被其他进程误读。

另外,在代码里拼接目录路径时要注意变量为空的风险。例如user_dir为空时,mkdir -p /home/$user_dir/log可能直接在home下建出log,而不是预期的用户子目录。先对变量做非空判断,再执行创建,是更严谨的编程习惯。

#!/bin/bash
user_dir="alice"
if [ -n "$user_dir" ]; then
  mkdir -p -m 750 /home/$user_dir/log
  echo "目录已准备完成"
else
  echo "用户名变量为空,终止创建"
fi

总体来看,mkdir虽是小命令,但-p、-m、-v这几个参数用熟了,能让你在Linux下管理文件路径时既快又稳。把它和shell判断逻辑结合,基本可以覆盖绝大多数目录初始化的场景。

linuxmkdir目录创建修改时间:2026-08-04 17:54:27

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。