0

0

Linux创建目录命令mkdir使用方式

P粉602998670

P粉602998670

发布时间:2025-09-11 10:10:01

|

912人浏览过

|

来源于php中文网

原创

答案:使用 mkdir -p 可高效创建多层级目录,结合大括号扩展能批量创建;通过 -m 选项可直接设置权限,避免后续用 chmod 调整;常见错误如权限不足需用 sudo,路径不存在需加 -p,目录已存在可用 -p 避免报错。

linux创建目录命令mkdir使用方式

mkdir
是 Linux 系统中用来创建新目录(也就是我们常说的文件夹)的命令。它的核心功能非常直接:告诉系统你想在哪里、以什么名字建立一个空白的容器。最简单的使用方式就是
mkdir 目录名
,回车后,一个崭新的目录就出现了。

说起

mkdir
,最直接的用法自然是创建单个目录。比如,你想在当前位置建一个叫
my_project
的文件夹,只需输入
mkdir my_project
。这很简单,但
mkdir
的真正魅力在于它提供的一些选项,能让你的操作更灵活,也更强大。

我个人最常用的,大概就是

-p
选项了。它允许你一次性创建多级目录,即便中间的父目录不存在,它也会帮你一并创建。这简直是自动化脚本的福音,省去了我手动
cd
进去一层层
mkdir
的麻烦。比如,要创建
project/src/main/java
这样的结构,你只需
mkdir -p project/src/main/java
。如果没有
-p
,你可能得先创建
project
,再
cd project
创建
src
,以此类推,效率大打折扣。

另一个我偶尔会用到的选项是

-m
,它可以在创建目录的同时设置其权限。虽然我通常会在创建后用
chmod
调整权限,但对于一些特定场景,比如需要立即限制访问的目录,
mkdir -m 700 secret_data
这种用法就非常方便,能确保目录一出生就拥有了严格的访问控制。

还有个

-v
选项,它会显示
mkdir
实际执行了哪些操作。在处理大量目录或复杂路径时,看着终端一行行打印出“已创建目录 'xxx'”,心里会踏实很多,知道命令确实在按预期工作。

总的来说,

mkdir
命令的基础用法虽然简单,但结合这些选项,它就能应对各种复杂的目录创建需求。

mkdir
命令如何高效创建多层级或批量目录?

在我日常的工作中,无论是搭建新的开发环境,还是整理文件结构,创建多层级或批量目录都是一个非常常见的需求。如果一层层手动创建,那效率简直是灾难。这时候,

mkdir -p
选项就成了我的救星。它不仅仅是创建父目录那么简单,它代表了一种“智能”的创建方式。

举个例子,假设你正在为一个新的Web项目准备目录结构,你可能需要

public/css
public/js
src/controllers
src/views
等等。如果用传统方式,你需要分别创建
public
src
,然后再进入
public
创建
css
js
,再进入
src
创建
controllers
views
。这流程繁琐且容易出错。

有了

-p
,你可以这样一行命令搞定:

mkdir -p public/{css,js} src/{controllers,views}

这里我结合了 Bash 的 brace expansion(大括号扩展),这是一种非常强大的 Shell 特性,能让你以简洁的方式生成多个路径。

public/{css,js}
会扩展成
public/css
public/js
。这样一来,不仅
public
src
会被创建,它们下面的子目录也会一并生成,而且如果
public
src
已经存在,
mkdir -p
也不会报错,而是默默地跳过,这大大增加了脚本的健壮性。

有时候,我也会用它来创建一系列按日期命名的日志目录,比如

logs/2023/10/26
。一个简单的脚本循环结合
-p
就能轻松实现,避免了手动创建的枯燥和潜在错误。这种“一步到位”的哲学,极大地提升了我在命令行下的工作效率。

如何在创建目录时直接设定访问权限?

目录的权限管理在 Linux 系统中至关重要,它直接关系到文件的安全性和系统的稳定性。虽然我们通常会先创建目录,然后使用

chmod
命令去调整权限,但
mkdir
命令提供了一个
-m
选项,允许你在目录创建之初就为其指定权限模式(mode)。这在我看来,对于一些需要即时安全控制的场景,比如存放敏感数据的目录,显得尤为实用。

默认情况下,

mkdir
创建的目录会继承父目录的权限,或者根据系统的
umask
值来确定。
umask
是一个掩码,它会从默认权限(目录是
777
)中“减去”对应的位。比如,如果
umask
0022
,那么新目录的权限通常会是
755
777 - 022 = 755
)。

但如果你想跳过

umask
的影响,或者需要一个非常具体的权限,
-m
选项就派上用场了。它的用法是
mkdir -m 权限模式 目录名
。这里的“权限模式”是一个三位或四位的八进制数,分别代表所有者、所属组和其他用户的权限。

例如,我需要创建一个只能由我自己读写执行,其他人完全不能访问的目录,我会这样做:

Shell脚本编写基础 中文WORD版
Shell脚本编写基础 中文WORD版

Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。它虽然不是Linux系统核心的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协调各个程序的运行。因此,对于用户来说,shell是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好Linux系统

下载
mkdir -m 700 private_data

这里的

700
意味着:

  • 7
    (所有者): 读 (4) + 写 (2) + 执行 (1) = 7
  • 0
    (所属组): 无权限
  • 0
    (其他用户): 无权限

这确保了

private_data
目录在创建的那一刻起,就拥有了最高的隐私保护。如果我希望目录对同组用户可读写,对其他人只读,我可以这样:

mkdir -m 775 shared_docs

这比先创建再

chmod
少了一个步骤,尤其在编写自动化脚本时,能够提高代码的简洁性和执行效率。当然,理解
umask
的作用也同样重要,因为它是系统默认行为的基石。但对于需要精确控制的目录,
-m
选项无疑提供了一个直接且强大的工具

使用
mkdir
命令时常见的错误及应对策略

即使是像

mkdir
这样看似简单的命令,在使用过程中也可能遇到一些小麻烦。这些错误通常不会很复杂,但了解它们以及如何解决,能让你在 Linux 环境下工作时更加从容。

一个非常常见的错误就是“Permission denied”(权限不足)。当你尝试在一个你没有写入权限的父目录下创建新目录时,系统就会拒绝你的请求。比如,你可能尝试在

/opt
/usr/local
这样的系统目录中直接创建文件夹,而你当前的用户并没有管理员权限。

mkdir /opt/my_new_app  # 可能会报错:mkdir: cannot create directory ‘/opt/my_new_app’: Permission denied

应对策略: 检查你是否有权限在目标路径下操作。如果没有,你需要切换到

root
用户(
sudo su -
)或者使用
sudo
命令来执行
mkdir

sudo mkdir /opt/my_new_app

但请记住,使用

sudo
意味着你正在以管理员身份操作,务必谨慎。

另一个我常遇到的情况是忘记使用

-p
选项,导致创建多级目录失败,出现“No such file or directory”(没有那个文件或目录)的错误。

mkdir project/src/main # 如果project/src不存在,就会报错

应对策略: 简单地加上

-p
选项即可。

mkdir -p project/src/main

这会告诉

mkdir
,如果路径中的任何父目录不存在,就先创建它们。

还有一种情况是尝试创建一个已经存在的目录。默认情况下,

mkdir
会报错,提示“File exists”(文件已存在)。

mkdir my_folder
mkdir my_folder # 报错:mkdir: cannot create directory ‘my_folder’: File exists

应对策略: 如果你确定要创建的目录可能已经存在,并且你只是想确保它存在而不想报错,那么

mkdir -p
同样适用。因为它在父目录存在时不会报错,对于已存在的最终目录,它也不会尝试重新创建,只是确保路径存在。这在编写幂等脚本时非常有用。

理解这些常见错误和它们的解决方案,能帮助你更顺畅地使用

mkdir
命令,避免不必要的挫折。它不是什么高深的学问,但却是日常工作中提高效率的关键细节。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

515

2023.06.20

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

245

2023.07.28

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

340

2023.08.03

js是什么意思
js是什么意思

JS是JavaScript的缩写,它是一种广泛应用于网页开发的脚本语言。JavaScript是一种解释性的、基于对象和事件驱动的编程语言,通常用于为网页增加交互性和动态性。它可以在网页上实现复杂的功能和效果,如表单验证、页面元素操作、动画效果、数据交互等。

5333

2023.08.17

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

483

2023.09.01

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

212

2023.09.04

Js中concat和push的区别
Js中concat和push的区别

Js中concat和push的区别:1、concat用于将两个或多个数组合并成一个新数组,并返回这个新数组,而push用于向数组的末尾添加一个或多个元素,并返回修改后的数组的新长度;2、concat不会修改原始数组,是创建新的数组,而push会修改原数组,将新元素添加到原数组的末尾等等。本专题为大家提供concat和push相关的文章、下载、课程内容,供大家免费下载体验。

219

2023.09.14

js截取字符串的方法介绍
js截取字符串的方法介绍

JavaScript字符串截取方法,包括substring、slice、substr、charAt和split方法。这些方法可以根据具体需求,灵活地截取字符串的不同部分。在实际开发中,根据具体情况选择合适的方法进行字符串截取,能够提高代码的效率和可读性 。

219

2023.09.21

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

54

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.8万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.1万人学习

CSS教程
CSS教程

共754课时 | 25.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号