cat命令中的奇怪语法

3

首先,如果这个问题可以通过网络搜索回答,我很抱歉,但我找不到任何信息。

在cat命令中有一些语法,我发现它可以“重复”文件。

cat file{,}

等价于调用

cat file file

此外,
cat file{,}{,}{,}{,}

重复的文件不是四次,而是十六次。 此外,
cat file{,,}

重复 file 3 次。

我想更多地了解这个语法。它叫什么名字?是内置在 cat 中还是 shell 功能?还有其他这种语法的特性吗?


1
唉,没有人指出这个语法与“cat”无关。它适用于所有命令;它是 shell 的一项功能。例如,看看 echo {1,2}{3,4}{5,6,7} 如何输出许多组合。 - glglgl
2个回答

4
你所提到的语法被称为花括号展开{,,}语法通常用于重复单词。例如:
echo foo{,,}

将会产生

foo foo foo

当您组合大括号扩展时,相当于将它们嵌套在一起:
echo foo{,}{,}{,}

等同于说

echo foo\ foo{,}{,}

echo foo\ foo\ foo\ foo{,}

并且生成

foo foo foo foo foo foo foo foo

基本上,给定一个字符串后面的{,}对会生成该字符串2n次。
除了上面提到的链接,你还可以在这里了解括号扩展。

4

这个特性叫做花括号扩展 (brace expansion)。

通常你可以写成 file{1,2,3},在运行命令前,bash会将其扩展为file1 file2 file3

如果你写成

mkdir foo{1,2,3}{a,b}

这将等同于

mkdir foo1a foo1b foo2a foo2b foo3a foo3b

它将创建这6个目录。

在您的情况下({,}),您添加了什么也没有,因此得到了两次相同的单词。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接