linux -mkdir 命令
Posted bobuddy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux -mkdir 命令相关的知识,希望对你有一定的参考价值。
mkdir:命令
1、命令详解
【功能说明】
- mkdir命令是“make directories”中每个单词的粗体字母组合而成,其功能是创建目录,默认情况下,如果要创建的目录已经存在,则会提示此文件已经存在;而不会继续创建目录
【语法格式】
-
mkdir [option] [directory]
-
mkdir [选项] [目录]
【参数选项说明】
-
-p 递归创建目录,递归的意思是父目录及其子目录的子目录,即使要创建的目录实现已存在也不会报错提示目录已经存在
-
-m 设置新创建目录的默认目录对应的权限
-
-v 显示创建目录的过程
2、使用案例
###2.1、基础范例
案例1、不使用任何命令参数创建目录用法示例。
我们先来查看下当前的目录树结构,命令如下:
-
[root@1-230 ~]# cd
-
[root@1-230 ~]# tree -d
-
. #根据结果可以看出当前目录下没有任何目录
-
0 directories
-
开始测试创建目录,并检查:
-
[root@1-230 ~]# mkdir data #在当前目录下创建data目录,此处data是相对路径
-
[root@1-230 ~]# tree -d
-
.
-
└── data #可以看到data目录已经创建。
-
1 directory
-
[root@1-230 ~]# mkdir data #再次执行创建命令会提示目录已经存在。
-
mkdir: 无法创建目录"data": 文件已存在
-
扩展知识:
-
windows下的目录路径样式为d:\\data\\test,而linux下的路径样式为/data/test,它们的目录顶点和分隔符均不同。
案例2:使用-p参数递归创建目录
当我们创建多级目录时,如果第一级目录(cc)不存在,那么我们创建结果会报错,导致无法创建成果,操作如下:
-
[root@1-230 ~]# mkdir cc/test
-
mkdir: cannot create directory 'cc/test': No such file or directory #提示没有这个文件或目录
-
此时,可以指定-P参数递归创建多级目录:
-
[root@1-230 ~]# mkdir -p cc/test
-
[root@1-230 ~]# tree -d
-
.
-
|-- cc
-
| `-- test
-
`-- data
-
3 directories
-
提示说明:
-
使用mkdir创建多级目录时,建议直接使用-p参数,可以避免出现“no such file or directory”这样没有文件或目录的报错了,不会影响已存在的目录。
案例3:加-v参数显示创建目录的过程。
使用-v参数显示创建目录的详细过程,具体操作命令如下:
-
[root@1-230 ~]# mkdir -pv aa/test
-
mkdir: created directory 'aa'
-
mkdir: created directory 'aa/test'
-
提示:
-
其实这个-v没有什么实际用途。
案例4:创建目录时可使用-m参数设置目录的默认权限。
-
[root@1-230 ~]# mkdir dir1
-
[root@1-230 ~]# ls -ld dir1 #ls命令的使用方法见后面的ls命令
-
drwxr-xr-x 2 root root 6 Oct 22 22:00 dir1 #创建该目录默认权限为755
-
[root@1-230 ~]# mkdir -m 755 dir2 #创建目录时指定755的数字权限
-
[root@1-230 ~]# ls -ld dir2
-
drwxr-xr-x 2 root root 6 Oct 22 22:00 dir2 #可以看到权限已经发生变化了
-
提示:
-
有关权限的知识可参数后面的chmod命令
案例5:技巧性范例,
同时创建多个目录及多级子目录。
在生产环境中,常常需要创建目录用来存放文件,如果同时创建多个目录并且每个目录下可能还有很多个子目录,哪就需要执行多次mkdir命令,这种做法比较不妥,事实上,我们可以使用mkdir命令同时创建多个多级目录,具体命令操作如下:
-
[root@1-230 ~]# mkdir -pv aa/{dir1_1,dir1_2}/{dir2_1,dir2_2} #大括号{} 里用逗号分隔
-
mkdir: created directory 'aa'
-
mkdir: created directory 'aa/dir1_1'
-
mkdir: created directory 'aa/dir1_1/dir2_1'
-
mkdir: created directory 'aa/dir1_1/dir2_2'
-
mkdir: created directory 'aa/dir1_2'
-
mkdir: created directory 'aa/dir1_2/dir2_1'
-
mkdir: created directory 'aa/dir1_2/dir2_2'
-
[root@1-230 ~]# tree -d aa/ #上面创建的目录命令所对应的目录结构如下。
-
aa/
-
|-- dir1_1
-
| |-- dir2_1
-
| `-- dir2_2
-
`-- dir1_2
-
|-- dir2_1
-
`-- dir2_2
-
6 directories
-
[root@1-230 ~]# mkdir -p cc/dir1_{1..3}/dir2_{1..3}/dir3_{a..c} #{1..3} 以及 {a..c}表示序列
-
[root@1-230 ~]# tree -d cc/
-
cc/
-
|-- dir1_1
-
| |-- dir2_1
-
| | |-- dir3_a
-
| | |-- dir3_b
-
| | `-- dir3_c
-
| |-- dir2_2
-
| | |-- dir3_a
-
| | |-- dir3_b
-
| | `-- dir3_c
-
| `-- dir2_3
-
| |-- dir3_a
-
| |-- dir3_b
-
| `-- dir3_c
-
|-- dir1_2
-
| |-- dir2_1
-
| | |-- dir3_a
-
| | |-- dir3_b
-
| | `-- dir3_c
-
| |-- dir2_2
-
| | |-- dir3_a
-
| | |-- dir3_b
-
| | `-- dir3_c
-
| `-- dir2_3
-
| |-- dir3_a
-
| |-- dir3_b
-
| `-- dir3_c
-
`-- dir1_3
-
|-- dir2_1
-
| |-- dir3_a
-
| |-- dir3_b
-
| `-- dir3_c
-
|-- dir2_2
-
| |-- dir3_a
-
| |-- dir3_b
-
| `-- dir3_c
-
`-- dir2_3
-
|-- dir3_a
-
|-- dir3_b
-
`-- dir3_c
-
39 directories
-
[root@1-230 ~]# mkdir -p bb/dir1{1..3}/dir2{1..3}/dir3{a..c} #
-
[root@1-230 ~]# tree -d bb/
-
bb/
-
|-- dir11
-
| |-- dir21
-
| | |-- dir3a
-
| | |-- dir3b
-
| | `-- dir3c
-
| |-- dir22
-
| | |-- dir3a
-
| | |-- dir3b
-
| | `-- dir3c
-
| `-- dir23
-
| |-- dir3a
-
| |-- dir3b
-
| `-- dir3c
-
|-- dir12
-
| |-- dir21
-
| | |-- dir3a
-
| | |-- dir3b
-
| | `-- dir3c
-
| |-- dir22
-
| | |-- dir3a
-
| | |-- dir3b
-
| | `-- dir3c
-
| `-- dir23
-
| |-- dir3a
-
| |-- dir3b
-
| `-- dir3c
-
`-- dir13
-
|-- dir21
-
| |-- dir3a
-
| |-- dir3b
-
| `-- dir3c
-
|-- dir22
-
| |-- dir3a
-
| |-- dir3b
-
| `-- dir3c
-
`-- dir23
-
|-- dir3a
-
|-- dir3b
-
`-- dir3c
-
39 directories
-
扩展知识:
-
大括号( { } )的特殊用法。
-
在{ } 中使用逗号分隔多个字符或单词时,使用echo命令可以将这些被分隔的字符或单词分别输出到屏幕上,示例如下:
-
[root@1-230 ~]# echo {a,c} #会输出a c到屏幕上。
-
a c
-
如果{ }前有字符时,输出结果如下:
-
[root@1-230 ~]# echo 1{2,3}
-
12 13
-
[root@1-230 ~]# echo 1{,3} #如果逗号前面什么都没有,可以认为是一个空字符串。
-
1 13
3、生产案例
案例1:克隆目录结构
-
[root@1-230 ~]# tree -fid --noreport cc #显示所有目录树,--noreport不显示最后一行统计信息,也可以用find命令输出下面的目录树。
-
cc
-
cc/dir1_1
-
cc/dir1_1/dir2_1
-
cc/dir1_1/dir2_1/dir3_a
-
cc/dir1_1/dir2_1/dir3_b
-
cc/dir1_1/dir2_1/dir3_c
-
cc/dir1_1/dir2_2
-
cc/dir1_1/dir2_2/dir3_a
-
cc/dir1_1/dir2_2/dir3_b
-
cc/dir1_1/dir2_2/dir3_c
-
cc/dir1_1/dir2_3
-
cc/dir1_1/dir2_3/dir3_a
-
cc/dir1_1/dir2_3/dir3_b
-
cc/dir1_1/dir2_3/dir3_c
-
cc/dir1_2
-
cc/dir1_2/dir2_1
-
cc/dir1_2/dir2_1/dir3_a
-
cc/dir1_2/dir2_1/dir3_b
-
cc/dir1_2/dir2_1/dir3_c
-
cc/dir1_2/dir2_2
-
cc/dir1_2/dir2_2/dir3_a
-
cc/dir1_2/dir2_2/dir3_b
-
cc/dir1_2/dir2_2/dir3_c
-
cc/dir1_2/dir2_3
-
cc/dir1_2/dir2_3/dir3_a
-
cc/dir1_2/dir2_3/dir3_b
-
cc/dir1_2/dir2_3/dir3_c
-
cc/dir1_3
-
cc/dir1_3/dir2_1
-
cc/dir1_3/dir2_1/dir3_a
-
cc/dir1_3/dir2_1/dir3_b
-
cc/dir1_3/dir2_1/dir3_c
-
cc/dir1_3/dir2_2
-
cc/dir1_3/dir2_2/dir3_a
-
cc/dir1_3/dir2_2/dir3_b
-
cc/dir1_3/dir2_2/dir3_c
-
cc/dir1_3/dir2_3
-
cc/dir1_3/dir2_3/dir3_a
-
cc/dir1_3/dir2_3/dir3_b
-
cc/dir1_3/dir2_3/dir3_c
-
[root@1-230 ~]# tree -fid --noreport cc >> ~/cc.test #将目录树内容追加到家目录下的cc.txt文件里
-
[root@1-230 ~]# cd /tmp/
-
[root@1-230 tmp]# mkdir -p `cat ~/cc.test` #mkdir命令后面可以接很多目录名称批量创建目录,但是如果将所有目录都放在mkdir命令后面势必会导致命令太长,因此这里采用了一个巧妙的用法,使用了一对反引号(在键盘ESC下方),反引内部使用cat命令读取~(家目录下的cc.txt文件内容, 这个文件内容就包含了所有的目录名称。最后大家要知道的是,一个命令语句中如果反引号包含的命令,那么需要优先执行反引号中的命令语句,就像本例应先执行cat命令,然后执行mkdir命令,cat命令使用方法见cat命令)
-
[root@1-230 tmp]# tree -d /tmp/cc #查看上述命令操作结果
-
/tmp/cc
-
|-- dir1_1
-
| |-- dir2_1
-
| | |-- dir3_a
-
| | |-- dir3_b
-
| | `-- dir3_c
-
| |-- dir2_2
-
| | |-- dir3_a
-
| | |-- dir3_b
-
| | `-- dir3_c
-
| `-- dir2_3
-
| |-- dir3_a
-
| |-- dir3_b
-
| `-- dir3_c
-
|-- dir1_2
-
| |-- dir2_1
-
| | |-- dir3_a
-
| | |-- dir3_b
-
| | `-- dir3_c
-
| |-- dir2_2
-
| | |-- dir3_a
-
| | |-- dir3_b
-
| | `-- dir3_c
-
| `-- dir2_3
-
| |-- dir3_a
-
| |-- dir3_b
-
| `-- dir3_c
-
`-- dir1_3
-
|-- dir2_1
-
| |-- dir3_a
-
| |-- dir3_b
-
| `-- dir3_c
-
|-- dir2_2
-
| |-- dir3_a
-
| |-- dir3_b
-
| `-- dir3_c
-
`-- dir2_3
-
|-- dir3_a
-
|-- dir3_b
-
`-- dir3_c
-
39 directories
转载于:https://blog.51cto.com/scajy/2307616
以上是关于linux -mkdir 命令的主要内容,如果未能解决你的问题,请参考以下文章
markdown [Docker] Docker片段列表和命令#linux #docker #snippets
Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段