这篇文章的内容主要围绕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系统mkdir命令怎样理解”这一问题有一定的了解,快去动手实践吧,如果想了解更多相关知识点,可以关注编程网网站!小编会继续为大家带来更好的文章!