在Linux操作系统中,新建文件夹(目录)是日常使用频率极高的基础操作。无论是部署网站、整理日志还是编写代码,都离不开目录的创建。最常用的方式是通过终端输入命令来完成,这比图形界面更灵活也更易于写成脚本。

一、mkdir命令的基本用法
mkdir是make directories的缩写,专门用于创建目录。最基础的语法是在命令后接一个或多个目录名,系统会在当前工作路径下生成对应的文件夹。例如我们想在用户主目录里建一个叫project的文件夹,只需切换过去并执行简单指令。
如果只写目录名而不带任何参数,mkdir默认只能创建单层目录。当给定的名字里包含斜杠且上层目录不存在时,命令会直接失败并提示No such file or directory。因此理解它的基础限制,是后续学习高级用法的第一步。
# 切换到当前用户主目录 cd ~ # 新建一个名为project的单层文件夹 mkdir project # 查看是否创建成功 ls -l
二、使用-p参数创建多级目录
实际开发中我们经常需要一次建好app/controller、app/model这样的嵌套结构。如果不用任何参数,就得先建app再进去做下一步,非常麻烦。mkdir提供的-p(parents)参数可以自动创建路径中缺失的父目录,一条命令搞定整条链路。
该参数不仅省事,还能避免脚本因目录已存在而中断。当目标目录已经存在时,带-p的执行不会报错,而是安静跳过,这让我们在写自动化部署脚本时不必每次都先判断目录是否存在。下面示例展示了如何用一条指令生成三层结构。
# 一次性创建多级目录,若父目录不存在则自动补全 mkdir -p project/app/controller # 确认嵌套结构 ls -R project
三、通过-m参数设定初始权限
默认情况下,新建目录的权限由系统的umask值决定,通常是755或类似配置。如果希望文件夹在生成时就具备特定访问权限,比如仅 owner 可读写执行、其他用户无权限,可以用-m(mode)参数直接指定,等效于建完再跑chmod。
权限数字依旧是标准的Linux三位八进制表示法,第一位属主、第二位属组、第三位其他人。下面例子中0700代表只有创建者能进能改,适合存放私密配置。注意-m和-p可以组合使用,从而同时解决路径与权限两个问题。
# 创建权限为700的私密目录 mkdir -m 700 secure_data # 组合使用:建多级目录且末尾目录权限为750 mkdir -p -m 750 project/logs/archive
四、批量新建与常见误区
当需要一次建多个并列文件夹时,可以把名字空格隔开传给同一个mkdir调用,Shell会展开成多次系统调用但只输一条命令。例如mkdir css js img就能在同路径下生成三个目录,比写三行更简洁。
新手常误以为mkdir能像touch那样创建文件,实际上它只负责目录;若路径里含有变量,要注意引号使用,防止空格导致被拆成多个目录名。另外,在权限受限的系统目录(如/usr)下直接建文件夹会报Permission denied,此时应配合sudo或切换到有权限的账户。
# 批量创建前端常用目录 mkdir css js img fonts # 使用变量时建议加双引号 dir_name="my test" mkdir "$dir_name"
| 参数 | 作用 | 典型场景 |
|---|---|---|
| -p | 自动创建父目录 | 初始化项目骨架 |
| -m | 设定初始权限 | 创建私密存储目录 |
| 无参数 | 仅建单层目录 | 快速建单个文件夹 |
五、在脚本中安全调用
写Shell脚本时,把mkdir放进部署流程可以规范目录布局。推荐始终带上-p,并在关键步骤后用if判断退出码,确保上一步真的成功,再继续写配置或拉代码,避免后续命令在缺失路径上出错。
如果希望脚本跨机器表现一致,可以在mkdir前用绝对路径,或在开头用cd锁定根目录。下面片段演示了如何在备份脚本里建立带日期的目录,并检测是否成功,失败则退出并告知原因。
#!/bin/bash
backup_root="/var/backups/app"
day_dir="$backup_root/$(date +%F)"
mkdir -p "$day_dir" || {
echo "无法创建备份目录 $day_dir"
exit 1
}
echo "备份目录已就绪: $day_dir"
掌握上述mkdir的用法与注意点后,你在Linux环境下新建文件夹就会变得高效且少出错。从单目录到嵌套结构,再到权限与脚本集成,这条命令虽小却贯穿了日常运维与开发的大部分场景。