Hmmm, apakah gerangan bash brace expansion itu?
Bash brace expansion adalah sebuah cara untuk menghasilkan string berdasar pola tertentu.

I don’t get it…
Izinkan saya untuk menjelaskan melalui contoh sebuah script bash.
Silahkan buka GitHub gist TeleBSE, sebuah script bash untuk mengambil tautan ke berkas PDF Buku Sekolah Elektronik. Dalam script tersebut ada beberapa baris yang mendayagunakan mekanisme bash brace expansion, mari kita bahas satu per satu.

Yang pertama adalah:

mkdir -p $BASEDIR/{SD_{1..6},SMP_{7..9},SMA_{10..12},SMK_{10..12}}  

Arti dari baris tersebut adalah: Buat map-map (folders) SD_1, SD_2, SD_3, SD_4, SD_5, SD_6, SMP_7, SMP_8, SMP_9, SMA_10, SMA_11, SMA_12, SMK_10, SMK_11, dan SMK12.
Jika tanpa bash brace expansion, maka kemungkinan perintahnya adalah sebagai berikut:

cd $BASEDIR
mkdir SD_1 SD_2 SD_3 SD_4 SD_5 SD_6 SMP_7 SMP_8 SMP_9 SMA_10 SMA_11 SMA_12 SMK_10 SMK_11 SMK12  

Wow! Is’t it amazing…
Jadi, bash brace expansion menghasilkan string baru dengan pola tertentu. Dari contoh di atas:

SD_{1..6}  

Dikembangkan menjadi:

SD_1 SD_2 SD_3 SD_4 SD_5 SD_6  

Mari kita lihat contoh berikutnya pada baris:

for kelas in {SD_{1..6},SMP_{7..9},SMA_{10..12},SMK_{10..12}}; do  

Baris for-loop ini akan menelusuri tiap map mulai dari SD_1 hingga SMK_12.
Jika menggunakan for-loop biasa, perintahnya adalah sebagai berikut:

for kelas in SD_1 SD_2 SD_3 SD_4 SD_5 SD_6 SMP_7 SMP_8 SMP_9 SMA_10 SMA_11 SMA_12 SMK_10 SMK_11 SMK12; do  

Lihat bagaimana bash brace expansion bisa menyederhanakan script kita.

Dari dua contoh di atas kiranya kita dapat memahami kegunaan bash brace expansion. Misal, untuk menyingkat dan menyederhanakan script dan mengurangi gerak jari dalam mengetik baris perintah.

Misal, kita hendak merubah nama atau memindahkan suatu berkas yang memiliki path yang panjang:

mv /tmp/test/folder/untuk/menunjukkan/path/yang/panjang/dan/dalam/berkas /tmp/test/folder/untuk/menunjukkan/path/yang/panjang/dan/dalam/file  

Lumayan panjang kan? Meski menggunakan bash-completion pun akan tetap membosankan. Di sini kita bisa menggunakan bantuan bash brace expansion:

mv /tmp/test/folder/untuk/menunjukkan/path/yang/panjang/dan/dalam/{berkas,file}  

Mencadangkan sebuah berkas dengan cara menyalin dan memberi akhiran -bak pada namanya?

cp /tmp/myscript.sh{,-bak}  

Hendak mengembalikan berkas myscript.sh-bak kembali menjadi myscript.sh?

mv /tmp/myscript.sh{-bak,}  

Demikian artikel hari ini, semoga bermanfaat…