mkdir Public/1 2 3 ----- 此行在 Public 文件夹中创建文件夹 1,并在 my pwd 中创建名为 2 和 3 的文件夹。
mkdir Public/{1..3} ---- 此行仅按预期在 Public 中创建文件夹 1,2,3。
有人可以解释发生了什么事吗?
答案1
你的第一个命令是这样的:
mkdir Public/1 2 3
BASH 解释为在 Public 目录中mkdir Public/1
创建一个名为 inside 的目录。1
其他2
和3
没有在其前面添加目录,因此 BASH 将其解释为在当前工作目录中创建它们。
你的第二个命令是这样的:
mkdir Public/{1..3}
正如您所看到的Public/{1..3}
,BASH 将此解释为使用大括号扩展来创建目录1
、2
和在目录3
内部,Public
而不是像第一个命令中那样使用当前工作目录。
如果您将相同的内容与rmdir
或一起使用touch
而不是 ,也会发生同样的情况mkdir
。
答案2
其中mkdir Public/1 2 3
有三个参数:Public/1
、2
和3
。该命令相当于
mkdir Public/1
mkdir 2
mkdir 3
在mkdir Public/{1..3}
shell中在运行{1..3}
之前展开mkdir
。但外壳不膨胀{1..3}
独自的。这{1..3}
是一个更大的“字”。Public/{1..3}
扩展到Public/1 Public/2 Public/3
.您可以通过以下方式查看echo
:
echo Public/{1..3}
shell 运行的真正命令mkdir Public/1 Public/2 Public/3
相当于
mkdir Public/1
mkdir Public/2
mkdir Public/3