Eles são chamados de expansão de chave .
Essa é uma das várias expansões feitas por bash , zsh e ksh , a expansão% filename*.txt sendo outra delas. A expansão de chave não é coberta pelo padrão POSIX e, portanto, não é portátil.
Você pode ler sobre isso em manual do bash .
Sugestão de @ @ Arrow: para obter apenas cat test.pdf test.pdf test.pdf com a expansão de chaves, você teria que usar esse "hack":
#cat test.pdf test.pdf
cat test.pdf{,}
#cat test.pdf test.pdf test.pdf
cat test.pdf{,,}
#cat test.pdf test.pdf test.pdf test.pdf
cat test.pdf{,,,}
Alguns usos comuns:
for index in {1..10}; do
echo "$index"
done
touch test_file_{a..e}.txt
Ou outro "hack" para imprimir uma string 10 vezes:
printf -- "mystring\n%0.s" {1..10}
Esteja ciente de que a expansão de chaves em bash é feita antes de expansão do parâmetro, portanto, um erro comum é:
num=10
for index in {1..$num}; do
echo "$index"
done
(o ksh93 shell lida com isso)