cat命令中的奇怪语法

时间:2014-03-16 07:32:28

标签: bash cat

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

cat命令中有一些语法我已经看过"重复"文件。

cat file{,}

相当于调用

cat file file

此外,

cat file{,}{,}{,}{,}

重复file不是四次,而是重复16次。 另外,

cat file{,,}

重复file 3次。

我想更多地了解这个语法。这叫什么?它是内置于cat还是shell功能?这个语法有更多的功能吗?

2 个答案:

答案 0 :(得分:4)

您所指的语法称为brace expansion

{,,}语法通常用于重复单词。话说:

echo foo{,,}

会产生

foo foo foo

当您组合大括号扩展时,它等同于嵌套那些:

echo foo{,}{,}{,}

等同来说

echo foo\ foo{,}{,}

echo foo\ foo\ foo\ foo{,}

并制作

foo foo foo foo foo foo foo foo

基本上,在给定字符串之后的 n {,}将生成字符串2 n 次。

除了上面提到的链接,您还可以了解大括号扩展here

答案 1 :(得分: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个目录。

在你的情况下({,})你没有添加任何东西,因此两次得到相同的单词。