使用大括号扩展创建目录

使用大括号扩展创建目录

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其他23没有在其前面添加目录,因此 BASH 将其解释为在当前工作目录中创建它们。

你的第二个命令是这样的:

mkdir Public/{1..3}

正如您所看到的Public/{1..3},BASH 将此解释为使用大括号扩展来创建目录12和在目录3内部,Public而不是像第一个命令中那样使用当前工作目录。

如果您将相同的内容与rmdir或一起使用touch而不是 ,也会发生同样的情况mkdir

答案2

其中mkdir Public/1 2 3有三个参数:Public/123。该命令相当于

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

相关内容