Copy

Brace expansions are commonly used with the cp or mv commands in order to dynamically generate strings. In this lesson, we'll use a brace expansion to shorten a command like cp index.js index.js.backup to cp index.js{,.backup}. We'll also see how brace expansions can generate sequences. For example, touch test-{1..10} will generate the arguments to touch to create 10 test files.

Note that the tree command that I use in this lesson has to be installed.

Case 0:

It acts like a loop

echo pre-{a,b,c}-post
## pre-a-post pre-b-post pre-c-post
echo pre-{,b,c}-post
## pre--post pre-b-post pre-c-post
echo {1..10}
## 1 2 3 4 5 6 7 8 9 10
echo {a..z}
## a b c d e f g h i j k l m n o p q r s t u v w x y z

Case 1:

copy index.js and create a backup file called index.js.backup

cp index.js{,.backup}

Case 2:

Create multi nested folder with same structure

mkdir -p packages/{pkg1,pkg2,pkg3}/src
tree

Case 3:

Greate multi test files

touch test-{1..3}.js