Linux 命令行完全指南:揭秘 mkdir 命令在 Linux 生产环境的 “隐藏技能”

在 Linux 操作系统的命令行环境中,mkdir命令是创建目录的基础且实用的工具。其基本语法格式格式为:

复制
[root@localhost ~]# mkdir [OPTION]... DIRECTORY...1.

该命令用于创建由DIRECTORY命名的目录。若在目录名前未添加任何路径名,将在当前目录下创建指定目录;若指定了已存在的路径,则会在该路径下创建相应目录。同时,创建目录时需确保新建目录与所在目录下的文件无重名情况。

命令参数与选项详解

参数选项

说明

DIRECTORY ...

指定要创建的目录列表,多个目录之间用空格隔开。例如mkdir dir1 dir2,可在当前目录下同时创建dir1和dir2两个目录。

选项

-p, --parents

若所要建立目录的上层目录尚未建立,该选项会一并建立上层目录。比如创建多级目录devops/test,若devops目录不存在,直接使用mkdir devops/test会报错;而使用mkdir -p devops/test,则会自动创建devops目录及子目录test。

-m, --mode=MOD

建立目录的同时设置目录的权限。如mkdir -m 333 dir2,创建dir2目录时将其权限设置为333,即所有者、组用户和其他用户都只有写和执行权限 。

-v, --verbose

显示创建目录的过程。执行mkdir -v dir1,命令行将显示mkdir: created directory dir1,方便用户确认目录创建情况。

-Z, --context=CTX

设置安全上下文,在使用 SELinux 时有效,可将每个创建的目录的 SELinux 安全环境设置为指定的CTX 。

--help

显示此帮助信息并退出,帮助用户快速了解命令用法和选项功能。

--version

显示版本信息并退出,便于用户知晓当前mkdir命令的版本 。

案例演示

(1) 不使用任何命令参数创建目录

直接指定目录名,在当前目录下创建新目录。

复制
[root@localhost ~]# mkdir data [root@localhost ~]# tree -d . └── data 1 directory1.2.3.4.5.6.

上述操作在当前目录下创建了名为data的目录,通过tree -d命令可直观查看目录结构。

(2) 使用 -p 参数递归创建多级目录

当创建多级目录且上层目录不存在时,-p参数可避免报错并自动创建所需上层目录。

复制
# 未使用 -p 参数,报错示例 [root@localhost ~]# mkdir devops/test mkdir: cannot create directory ‘devops/test’: No such file or directory # 使用 -p 参数成功创建 [root@localhost ~]# mkdir -p devops/test [root@localhost ~]# tree -d . ├── data └── devops └── test 3 directories1.2.3.4.5.6.7.8.9.10.11.12.13.

(3) 使用 -m 参数设置目录的默认权限

创建目录时可利用-m参数灵活设置权限。

复制
# 创建该目录默认权限为 755 [root@localhost ~]# mkdir dir1 [root@localhost ~]# ls -ld dir1/ drwxr-xr-x. 2 root root 6 Jun 23 22:40 dir1/ # 创建目录时指定 333 的数字权限 [root@localhost ~]# mkdir -m 333 dir2 [root@localhost ~]# ls -ld dir2/ d-wx-wx-wx. 2 root root 6 Jun 23 22:41 dir2/1.2.3.4.5.6.7.8.9.

(4) 同时创建多个目录及多级子目录

在生产环境中,常需创建多个目录及多级子目录,此时可借助mkdir命令结合大括号{}的特殊用法高效完成。

复制
# 大括号里用逗号分隔 [root@localhost ~]# mkdir -p devops/{dir1_1,dir1_2}/{dir2_1,dir2_2} # 上面创建的目录命令所对应的目录结构如下 [root@localhost ~]# tree -d devops/ devops/ ├── dir1_1 │ ├── dir2_1 │ └── dir2_2 ├── dir1_2 │ ├── dir2_1 │ └── dir2_2 └── test 7 directories # {1..5}{a..g}表示序列 [root@localhost ~]# mkdir -p test/dir{1..5} ops/{a..g} [root@localhost ~]# tree -d test/ ops/ test/ ├── dir1 ├── dir2 ├── dir3 ├── dir4 └── dir5 ops/ ├── a ├── b ├── c ├── d ├── e ├── f └── g 12 directories1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.
扩展知识:大括号{}的特殊用法

在{}中使用逗号分隔多个字符或单词时,配合echo命令可将这些字符或单词分别输出到屏幕上。

复制
# 会输出 B C 到屏幕上 [root@localhost ~]# echo {B,C} B C [root@localhost ~]# echo A{B,C} AB AC # 如果逗号前无内容,可认为是一个空字符串 [root@localhost ~]# echo A{,C} A AC1.2.3.4.5.6.7.8.9.10.
生产案例

在实际生产中,若要对大目录进行脚本操作,需先搭建模拟环境复制目录结构。

复制
# 显示所有目录树,--noreport 不显示最后一行统计信息,也可用 find 命令输出目录树 [root@localhost ~]# tree -fid --noreport devops/ devops devops/dir1_1 devops/dir1_1/dir2_1 devops/dir1_1/dir2_2 devops/dir1_2 devops/dir1_2/dir2_1 devops/dir1_2/dir2_2 devops/test # 将目录树内容追加到 root 用户家目录下的 devops.txt 文件中 [root@localhost ~]# tree -fid --noreport devops/ >> ~/devops.txt [root@localhost ~]# cd /tmp/ [root@localhost tmp]# mkdir -p `cat /root/devops.txt` [root@localhost tmp]# tree devops/ devops/ ├── dir1_1 │ ├── dir2_1 │ └── dir2_2 ├── dir1_2 │ ├── dir2_1 │ └── dir2_2 └── test 7 directories, 0 files1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.

此案例中,利用反引号优先执行内部cat命令读取文件内容,再执行mkdir命令,避免了因命令过长带来的不便,高效创建了所需目录结构。

掌握mkdir命令的这些用法,能够帮助我们在 Linux 系统中更便捷、高效地进行目录管理,无论是日常操作还是生产环境应用,都能游刃有余。

THE END