良许Linux教程网 干货合集 Linux系统mkdir命令

Linux系统mkdir命令

Linux系统中mkdir命令创建指定的目录名,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录,下面良许教程网为大家分享一下Linux系统mkdir命令的具体使用方法。

Linux系统mkdir命令

语法

 mkdir [-p] dirName

参数说明:

  • -p 确保目录名称存在,不存在的就建一个。

案例演示:

-p 选项

如果 test 目录不存在,那么会创建这个目录,否则会提示创建失败,如下

 ~ $ mkdir test
 mkdir: 无法创建目录"test": 文件已存在
 12

在命令行提示创建失败,其实没有任何影响,但是在 shell 脚本中就有影响了,这个命令的退出状态是 1,表示执行失败,这会影响脚本后面的逻辑。那么有没有办法,在目录已经存在的情况下,执行 mkdir 命令不会报错呢?使用 -p 选项

 ~ $ ls -d test
 test
 ~ $ mkdir -p test
 ~ $ echo $?
 0
 12345

可以看到,在 test 目录存在的情况下,如果使用 -p 选项创建 test 目录,那么退出状态是 0,也就是命令执行成功,这在 shell 脚本中非常有用。

-p 选项其实还有另外一个作用,那就是创建多级目录

 ~ $ ls test/
 hello.c  world.c
 ~ $ mkdir test/dir1/dir2
 mkdir: 无法创建目录"test/dir1/dir2": 没有那个文件或目录
 ~ $ mkdir -p test/dir1/dir2
 ~ $ tree test
 test
 ├── dir1
 │   └── dir2
 ├── hello.c
 └── world.c
 
 2 directories, 2 files
 12345678910111213

可以看到,如果不使用 -p 选项,那么是无法创建多级目录的。

指定创建目录的权限

通过 -m 选项可以指定创建目录的权限,例如

 ~ $ mkdir -m 744 hello
 ~ $ ls -ld hello
 drwxr--r-- 2 david david 4096 9月  29 15:08 hello
 123

我们可以发现 hello 目录的权限正好对应 744 ,而并没有受 umask 值的影响。

这只是创建一级目录,如果创建的是多级目录呢?

 ~ $ umask
 0022
 ~$
 ~ $ mkdir -p -m 744 hello/world/david
 ~$
 ~ $ ls -ld hello/world/
 drwxr-xr-x 3 umi umi 4096 9月  29 15:16 hello/world/
 ~$
 ~ $ ls -ld hello/world/david/
 drwxr--r-- 2 umi umi 4096 9月  29 15:16 hello/world/david/
 12345678910

通过mkdir -p -m 744 hello/world/david 创建了两个目录 world 和 david,但是只有 david 目录的权限才是指定的 744,而 world 目录是 755,这是因为 world 目录受 umaks 影响了。

因此如果在创建多级目录时,指定了权限,那么这个权限是赋予了最深的一层目录,而父目录的权限是按系统的方式(受umask影响)。

以上就是良许教程网为各位朋友分享的Linux系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你!

137e00002230ad9f26e78-265x300

本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

电子邮件地址不会被公开。 必填项已用*标注

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部