Reputation: 837
First of all, I apologize if this question can be answered with a web search, but I couldn't find anything.
There is some grammar in the cat command which I've seen to "repeat" files.
cat file{,}
Is equivalent to calling
cat file file
Also,
cat file{,}{,}{,}{,}
repeats file
not four times, but 16 times.
In addition,
cat file{,,}
repeats file
3 times.
I would like to know more about this grammar. What is it called? Is it built into cat or is it a shell feature? Are there more features of this grammar?
Upvotes: 3
Views: 108
Reputation: 123458
The syntax that you are referring to is known as brace expansion.
The {,,}
syntax is often used to repeat words. Saying:
echo foo{,,}
would produce
foo foo foo
When you combine brace expansions, it's equivalent to nesting those:
echo foo{,}{,}{,}
is equivalent to saying
echo foo\ foo{,}{,}
and to
echo foo\ foo\ foo\ foo{,}
and produces
foo foo foo foo foo foo foo foo
Essentially, n pairs of {,}
after a given string would generate the string 2n times.
In addition to link mentioned above, you can also learn about brace expansion here.
Upvotes: 4
Reputation: 26515
This feature is called brace expansion.
Generally you can write file{1,2,3}
and bash expands it to file1 file2 file3
before running the command.
If you write
mkdir foo{1,2,3}{a,b}
it will be equivalent to
mkdir foo1a foo1b foo2a foo2b foo3a foo3b
and will create those 6 directories.
In your case ({,}
) you are adding nothing and nothing and therefore get the same word twice.
Upvotes: 4