核心结论是 Linux 新建目录的核心命令就是 mkdir,是系统原生内置命令,全称 make directory,支持在指定路径创建单个目录,也可以一次性批量创建多个目录,还可以递归创建多层嵌套目录,创建目录的时候可以自定义权限,除了 mkdir 之外,没有其他专门用来新建目录的基础命令,日常运维部署软件 存放日志 备份数据,都会频繁使用 linux 怎么新建目录这个操作,mkdir 最关键的两个参数就是 p 和 m,p 参数实现递归创建多级目录,m 参数创建的时候直接指定权限,很多新手创建多层目录报错,就是忘记加 p 参数,同时新建目录会受到父目录写权限限制,如果当前账号没有父目录写入权限,就会创建失败,需要 sudo 提权。
Linux 的目录本质也是一种特殊文件,也就是目录项,mkdir 执行的时候,会在指定父目录里面生成这个目录的 inode,初始化目录内部默认的。和.. 两个特殊条目,Linux 采用树形目录结构,父目录必须存在,才能在它下面新建子目录,这就是为什么直接创建多层嵌套目录会报错,所以设计了 p 递归参数,自动把中间不存在的父目录一并创建出来,m 参数是因为默认新建目录会受 umask 掩码影响,生成默认权限,很多时候业务要求目录固定权限,就可以在创建的时候直接用 m 指定,不用创建完再执行 chmod 修改,这也是 linux 怎么新建目录进阶用法。
linux 怎么新建目录参数总览表格
| 参数 | 作用 | 说明 |
|---|---|---|
| 无参数 | 创建单层目录 | 父目录必须已经存在 |
| p | 递归创建多级目录 | 中间缺失父目录自动创建,目录已经存在也不会报错 |
| m | 创建时指定目录权限 | 直接设置 chmod 权限值,覆盖 umask 默认权限 |
| v | 显示创建过程 | 输出每一步创建提示,适合调试 |
详细操作步骤
创建单个单层目录
写法 mkdir test
执行之后,当前工作目录下面就生成 test 文件夹,使用 ls 可以查看到新建目录
如果要在指定绝对路径新建,写法 mkdir /data/log
一次性批量创建多个同级目录
写法 mkdir bak1 bak2 bak3
多个目录名称空格隔开,一次性在当前目录同时创建多个同级文件夹,适合批量初始化项目目录
递归创建多层嵌套目录
写法 mkdir p /data/web/nginx/conf
如果 /data/data/web/data/web/nginx 这些父目录都不存在,p 参数会自动依次创建全部层级,这是 linux 怎么新建目录最常用进阶写法
如果目录已经存在,加上 p 不会报错,不加 p 就会提示 No such file or directory
创建目录同时指定权限
写法 mkdir m 755 /data/backup
创建 backup 目录,权限直接设置为 755,不受 umask 默认掩码影响
如果需要 700 这种私有目录,就写 mkdir m 700 /data/private
带详细输出创建
写法 mkdir p v /data/log/app
v 参数会打印每一级目录创建成功提示,适合脚本里面查看执行过程
进阶要点
新建目录之后默认属主是当前执行命令的用户,如果是 sudo 创建,属主会变成 root,后续业务程序写入会有权限问题,必要时使用 chown 修改属主
umask 会影响默认权限,普通默认新建目录一般是 755 或者 775,不同发行版 umask 配置不一样
目录名称不要使用空格特殊符号,建议使用英文小写加下划线,避免后续命令处理出错
如果父目录是只读挂载,即使加 p 参数也无法新建目录,需要检查挂载属性和磁盘空间,磁盘满的时候新建目录同样失败
【常见问题】
问题 1 linux 怎么新建目录创建多层目录提示不存在怎么办
回答 1 linux 怎么新建目录创建多层嵌套目录报错,是因为中间父目录不存在,linux 怎么新建目录正确做法是加上 p 递归参数,mkdir p 多层路径,系统会自动创建全部中间父目录。
问题 2 linux 怎么新建目录 mkdir p 目录已经存在还会报错吗
回答 1 linux 怎么新建目录加上 p 参数之后,如果目标目录已经存在,命令不会报错,不加 p 参数,目录已经存在就会提示文件已存在,这是 linux 怎么新建目录 p 参数很重要的特性。
问题 3 linux 怎么新建目录创建之后默认权限可以修改吗
回答 1 linux 怎么新建目录默认权限受 umask 控制,如果想创建的时候直接指定权限,使用 m 参数,mkdir m 权限值 目录名,linux 怎么新建目录也可以创建完成之后,再用 chmod 调整目录权限。
问题 4 linux 怎么新建目录提示权限拒绝是什么原因
回答 1 linux 怎么新建目录提示权限拒绝,代表当前用户对父目录没有写入权限,linux 怎么新建目录可以使用 sudo 提权执行,或者切换到有权限的账号,同时还要确认磁盘空间是否已经占满。
【免责申明】
本文内容仅作为 Linux 技术学习参考,linux 怎么新建目录操作虽然风险较低,但是在系统关键路径执行时仍要确认路径,避免误创建目录影响原有业务结构,不同发行版 mkdir 参数行为基本一致,若磁盘空间不足或者父目录只读会导致创建失败,操作产生相关异常由操作者自行承担。


