linux -mkdir 命令

Posted bobuddy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux -mkdir 命令相关的知识,希望对你有一定的参考价值。

mkdir:命令

1、命令详解

【功能说明】

  • mkdir命令是“make directories”中每个单词的粗体字母组合而成,其功能是创建目录,默认情况下,如果要创建的目录已经存在,则会提示此文件已经存在;而不会继续创建目录

【语法格式】

 
  1. mkdir [option] [directory]

  2. mkdir  [选项] [目录]

【参数选项说明】

 
  1. -p 递归创建目录,递归的意思是父目录及其子目录的子目录,即使要创建的目录实现已存在也不会报错提示目录已经存在

  2. -m 设置新创建目录的默认目录对应的权限

  3. -v 显示创建目录的过程

2、使用案例

###2.1、基础范例

案例1、不使用任何命令参数创建目录用法示例。

我们先来查看下当前的目录树结构,命令如下:

 
  1. [root@1-230 ~]# cd

  2. [root@1-230 ~]# tree -d

  3. . #根据结果可以看出当前目录下没有任何目录

  4. 0 directories

  5.  
  6. 开始测试创建目录,并检查:

  7. [root@1-230 ~]# mkdir data #在当前目录下创建data目录,此处data是相对路径

  8. [root@1-230 ~]# tree -d

  9. .

  10. └── data #可以看到data目录已经创建。

  11.  
  12. 1 directory

  13. [root@1-230 ~]# mkdir data #再次执行创建命令会提示目录已经存在。

  14. mkdir: 无法创建目录"data": 文件已存在

  15.  
  16. 扩展知识:

  17. windows下的目录路径样式为d:\\data\\test,而linux下的路径样式为/data/test,它们的目录顶点和分隔符均不同。

案例2:使用-p参数递归创建目录

当我们创建多级目录时,如果第一级目录(cc)不存在,那么我们创建结果会报错,导致无法创建成果,操作如下:

 
  1. [root@1-230 ~]# mkdir cc/test

  2. mkdir: cannot create directory 'cc/test': No such file or directory #提示没有这个文件或目录

  3.  
  4. 此时,可以指定-P参数递归创建多级目录:

  5. [root@1-230 ~]# mkdir -p cc/test

  6. [root@1-230 ~]# tree -d

  7. .

  8. |-- cc

  9. | `-- test

  10. `-- data

  11.  
  12. 3 directories

  13. 提示说明:

  14. 使用mkdir创建多级目录时,建议直接使用-p参数,可以避免出现“no such file or directory”这样没有文件或目录的报错了,不会影响已存在的目录。

案例3:加-v参数显示创建目录的过程。

使用-v参数显示创建目录的详细过程,具体操作命令如下:

 
  1. [root@1-230 ~]# mkdir -pv aa/test

  2. mkdir: created directory 'aa'

  3. mkdir: created directory 'aa/test'

  4.  
  5. 提示:

  6. 其实这个-v没有什么实际用途。

案例4:创建目录时可使用-m参数设置目录的默认权限。

 
  1. [root@1-230 ~]# mkdir dir1

  2. [root@1-230 ~]# ls -ld dir1 #ls命令的使用方法见后面的ls命令

  3. drwxr-xr-x 2 root root 6 Oct 22 22:00 dir1 #创建该目录默认权限为755

  4. [root@1-230 ~]# mkdir -m 755 dir2 #创建目录时指定755的数字权限

  5. [root@1-230 ~]# ls -ld dir2

  6. drwxr-xr-x 2 root root 6 Oct 22 22:00 dir2 #可以看到权限已经发生变化了

  7.  
  8. 提示:

  9.  
  10. 有关权限的知识可参数后面的chmod命令

案例5:技巧性范例,

同时创建多个目录及多级子目录。

在生产环境中,常常需要创建目录用来存放文件,如果同时创建多个目录并且每个目录下可能还有很多个子目录,哪就需要执行多次mkdir命令,这种做法比较不妥,事实上,我们可以使用mkdir命令同时创建多个多级目录,具体命令操作如下:

 
  1. [root@1-230 ~]# mkdir -pv aa/{dir1_1,dir1_2}/{dir2_1,dir2_2} #大括号{} 里用逗号分隔

  2. mkdir: created directory 'aa'

  3. mkdir: created directory 'aa/dir1_1'

  4. mkdir: created directory 'aa/dir1_1/dir2_1'

  5. mkdir: created directory 'aa/dir1_1/dir2_2'

  6. mkdir: created directory 'aa/dir1_2'

  7. mkdir: created directory 'aa/dir1_2/dir2_1'

  8. mkdir: created directory 'aa/dir1_2/dir2_2'

  9.  
  10. [root@1-230 ~]# tree -d aa/ #上面创建的目录命令所对应的目录结构如下。

  11. aa/

  12. |-- dir1_1

  13. | |-- dir2_1

  14. | `-- dir2_2

  15. `-- dir1_2

  16. |-- dir2_1

  17. `-- dir2_2

  18.  
  19. 6 directories

  20.  
  21. [root@1-230 ~]# mkdir -p cc/dir1_{1..3}/dir2_{1..3}/dir3_{a..c} #{1..3} 以及 {a..c}表示序列

  22. [root@1-230 ~]# tree -d cc/

  23. cc/

  24. |-- dir1_1

  25. | |-- dir2_1

  26. | | |-- dir3_a

  27. | | |-- dir3_b

  28. | | `-- dir3_c

  29. | |-- dir2_2

  30. | | |-- dir3_a

  31. | | |-- dir3_b

  32. | | `-- dir3_c

  33. | `-- dir2_3

  34. | |-- dir3_a

  35. | |-- dir3_b

  36. | `-- dir3_c

  37. |-- dir1_2

  38. | |-- dir2_1

  39. | | |-- dir3_a

  40. | | |-- dir3_b

  41. | | `-- dir3_c

  42. | |-- dir2_2

  43. | | |-- dir3_a

  44. | | |-- dir3_b

  45. | | `-- dir3_c

  46. | `-- dir2_3

  47. | |-- dir3_a

  48. | |-- dir3_b

  49. | `-- dir3_c

  50. `-- dir1_3

  51. |-- dir2_1

  52. | |-- dir3_a

  53. | |-- dir3_b

  54. | `-- dir3_c

  55. |-- dir2_2

  56. | |-- dir3_a

  57. | |-- dir3_b

  58. | `-- dir3_c

  59. `-- dir2_3

  60. |-- dir3_a

  61. |-- dir3_b

  62. `-- dir3_c

  63.  
  64. 39 directories

  65.  
  66. [root@1-230 ~]# mkdir -p bb/dir1{1..3}/dir2{1..3}/dir3{a..c} #

  67. [root@1-230 ~]# tree -d bb/

  68. bb/

  69. |-- dir11

  70. | |-- dir21

  71. | | |-- dir3a

  72. | | |-- dir3b

  73. | | `-- dir3c

  74. | |-- dir22

  75. | | |-- dir3a

  76. | | |-- dir3b

  77. | | `-- dir3c

  78. | `-- dir23

  79. | |-- dir3a

  80. | |-- dir3b

  81. | `-- dir3c

  82. |-- dir12

  83. | |-- dir21

  84. | | |-- dir3a

  85. | | |-- dir3b

  86. | | `-- dir3c

  87. | |-- dir22

  88. | | |-- dir3a

  89. | | |-- dir3b

  90. | | `-- dir3c

  91. | `-- dir23

  92. | |-- dir3a

  93. | |-- dir3b

  94. | `-- dir3c

  95. `-- dir13

  96. |-- dir21

  97. | |-- dir3a

  98. | |-- dir3b

  99. | `-- dir3c

  100. |-- dir22

  101. | |-- dir3a

  102. | |-- dir3b

  103. | `-- dir3c

  104. `-- dir23

  105. |-- dir3a

  106. |-- dir3b

  107. `-- dir3c

  108.  
  109. 39 directories

  110.  
  111. 扩展知识:

  112.  
  113.  大括号( { } )的特殊用法。

  114.  
  115.  在{ } 中使用逗号分隔多个字符或单词时,使用echo命令可以将这些被分隔的字符或单词分别输出到屏幕上,示例如下:

  116.  
  117. [root@1-230 ~]# echo {a,c} #会输出a c到屏幕上。

  118. a c

  119.  
  120. 如果{ }前有字符时,输出结果如下:

  121.  
  122. [root@1-230 ~]# echo 1{2,3}

  123. 12 13

  124. [root@1-230 ~]# echo 1{,3} #如果逗号前面什么都没有,可以认为是一个空字符串。

  125. 1 13

3、生产案例

案例1:克隆目录结构

 
  1. [root@1-230 ~]# tree -fid --noreport cc #显示所有目录树,--noreport不显示最后一行统计信息,也可以用find命令输出下面的目录树。

  2. cc

  3. cc/dir1_1

  4. cc/dir1_1/dir2_1

  5. cc/dir1_1/dir2_1/dir3_a

  6. cc/dir1_1/dir2_1/dir3_b

  7. cc/dir1_1/dir2_1/dir3_c

  8. cc/dir1_1/dir2_2

  9. cc/dir1_1/dir2_2/dir3_a

  10. cc/dir1_1/dir2_2/dir3_b

  11. cc/dir1_1/dir2_2/dir3_c

  12. cc/dir1_1/dir2_3

  13. cc/dir1_1/dir2_3/dir3_a

  14. cc/dir1_1/dir2_3/dir3_b

  15. cc/dir1_1/dir2_3/dir3_c

  16. cc/dir1_2

  17. cc/dir1_2/dir2_1

  18. cc/dir1_2/dir2_1/dir3_a

  19. cc/dir1_2/dir2_1/dir3_b

  20. cc/dir1_2/dir2_1/dir3_c

  21. cc/dir1_2/dir2_2

  22. cc/dir1_2/dir2_2/dir3_a

  23. cc/dir1_2/dir2_2/dir3_b

  24. cc/dir1_2/dir2_2/dir3_c

  25. cc/dir1_2/dir2_3

  26. cc/dir1_2/dir2_3/dir3_a

  27. cc/dir1_2/dir2_3/dir3_b

  28. cc/dir1_2/dir2_3/dir3_c

  29. cc/dir1_3

  30. cc/dir1_3/dir2_1

  31. cc/dir1_3/dir2_1/dir3_a

  32. cc/dir1_3/dir2_1/dir3_b

  33. cc/dir1_3/dir2_1/dir3_c

  34. cc/dir1_3/dir2_2

  35. cc/dir1_3/dir2_2/dir3_a

  36. cc/dir1_3/dir2_2/dir3_b

  37. cc/dir1_3/dir2_2/dir3_c

  38. cc/dir1_3/dir2_3

  39. cc/dir1_3/dir2_3/dir3_a

  40. cc/dir1_3/dir2_3/dir3_b

  41. cc/dir1_3/dir2_3/dir3_c

  42.  
  43. [root@1-230 ~]# tree -fid --noreport cc >> ~/cc.test #将目录树内容追加到家目录下的cc.txt文件里

  44. [root@1-230 ~]# cd /tmp/

  45. [root@1-230 tmp]# mkdir -p `cat ~/cc.test` #mkdir命令后面可以接很多目录名称批量创建目录,但是如果将所有目录都放在mkdir命令后面势必会导致命令太长,因此这里采用了一个巧妙的用法,使用了一对反引号(在键盘ESC下方),反引内部使用cat命令读取~(家目录下的cc.txt文件内容, 这个文件内容就包含了所有的目录名称。最后大家要知道的是,一个命令语句中如果反引号包含的命令,那么需要优先执行反引号中的命令语句,就像本例应先执行cat命令,然后执行mkdir命令,cat命令使用方法见cat命令)

  46. [root@1-230 tmp]# tree -d /tmp/cc #查看上述命令操作结果

  47. /tmp/cc

  48. |-- dir1_1

  49. | |-- dir2_1

  50. | | |-- dir3_a

  51. | | |-- dir3_b

  52. | | `-- dir3_c

  53. | |-- dir2_2

  54. | | |-- dir3_a

  55. | | |-- dir3_b

  56. | | `-- dir3_c

  57. | `-- dir2_3

  58. | |-- dir3_a

  59. | |-- dir3_b

  60. | `-- dir3_c

  61. |-- dir1_2

  62. | |-- dir2_1

  63. | | |-- dir3_a

  64. | | |-- dir3_b

  65. | | `-- dir3_c

  66. | |-- dir2_2

  67. | | |-- dir3_a

  68. | | |-- dir3_b

  69. | | `-- dir3_c

  70. | `-- dir2_3

  71. | |-- dir3_a

  72. | |-- dir3_b

  73. | `-- dir3_c

  74. `-- dir1_3

  75. |-- dir2_1

  76. | |-- dir3_a

  77. | |-- dir3_b

  78. | `-- dir3_c

  79. |-- dir2_2

  80. | |-- dir3_a

  81. | |-- dir3_b

  82. | `-- dir3_c

  83. `-- dir2_3

  84. |-- dir3_a

  85. |-- dir3_b

  86. `-- dir3_c

  87.  
  88. 39 directories

转载于:https://blog.51cto.com/scajy/2307616

相关资源:linux中mkdir命令使用详解-其它代码类资源

以上是关于linux -mkdir 命令的主要内容,如果未能解决你的问题,请参考以下文章

markdown [Docker] Docker片段列表和命令#linux #docker #snippets

Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段

VSCode自定义代码片段——git命令操作一个完整流程

VSCode自定义代码片段——cli的终端命令大全

VSCode自定义代码片段4——cli的终端命令大全

VSCode自定义代码片段15——git命令操作一个完整流程