Ekspansi brace adalah teknik yang berguna untuk menghasilkan daftar string yang dapat digunakan dalam skrip dan alias dan pada baris perintah Linux. Hemat waktu dan hindari kesalahan dengan mengetik lebih sedikit.
Ekspansi Brace
Sebelum shell Bash mengeksekusi perintah di jendela terminal atau baris dalam skrip, ia memeriksa apakah perlu melakukan substitusi apa pun pada perintah. Nama variabel diganti dengan nilainya, alias diganti dengan perintah singkatannya, dan perluasan apapun dilakukan. Ekspansi brace merupakan salah satu bentuk ekspansi yang didukung oleh Bash.
Ekspansi brace tersedia di cangkang modern, tetapi mungkin hilang dari beberapa cangkang lama. Jika Anda akan menggunakan ekspansi kurung kurawal dalam skrip, pastikan Anda memanggil shell yang mendukung perluasan kurung kurawal, seperti Bash:
#!/bin/bash
kami akan menggunakan Bash sebagai contoh kami.
Membuat daftar string mungkin tampak lebih baru daripada manfaat, tetapi ini menawarkan beberapa fungsionalitas yang dapat menghemat waktu dan penekanan tombol. Seringkali, ini dapat memberikan solusi sederhana dan elegan untuk suatu masalah atau kebutuhan.
Perluasan Sederhana
Ekspansi kurung kurawal terkandung di antara sepasang kurung kurawal “{}”. Ini bisa berupa daftar item yang dipisahkan koma atau penentu rentang. Spasi tidak diizinkan di dalam tanda kurung kecuali Anda telah membungkus string dengan tanda kutip “”. ”
Untuk daftar yang dipisahkan koma, proses perluasan mengambil setiap elemen secara bergantian dan meneruskannya ke perintah pemanggil. Dalam contoh ini, gema yang hanya mencetaknya di jendela terminal. Perhatikan bahwa koma diabaikan.
echo {one,two,three,four}
Daftar bisa berupa kata atau angka.
echo {1,2,3,4}
Urutan elemen daftar sepenuhnya berubah-ubah.
echo (4,2,3,1)
Rentang ekspansi memiliki karakter awal dan akhir yang terhubung dengan dua titik “..” tanpa spasi. Semua elemen daftar yang hilang disediakan secara otomatis oleh perluasan sehingga seluruh rentang dari karakter awal hingga karakter akhir dibuat.
Hal tersebut akan mencetak angka dari 1 hingga 10.
echo {1..10}
Penomorannya bisa secara acak. Penomorannya tidak harus dimulai dari satu.
echo {3..12}
Rentang waktunya dapat ditentukan agar berjalan mundur. Hal ini akan menghasilkan daftar dari lima ke satu.
echo {5..1}
Rentang dapat mencakup angka negatif.
echo {4..-4}
Seperti yang kami tunjukkan sebelumnya, rentang memiliki karakter awal dan akhir. Tidak harus berupa angka, tetapi bisa juga berupa huruf.
echo {q..v}
Huruf-hurufnya juga bisa mundur.
echo {f..a}
Menggunakan Brace Expansion dengan Loops
Anda dapat menggunakan ekspansi brace dengan rentang dalam loop dalam skrip.
for i in {3..7}
do
echo $i
done
Rentang ekspansi brace memungkinkan Anda menggunakan karakter sebagai variabel loop.
for i in {m..q}
do
echo $i
done
Pengulangan biasanya digunakan dalam skrip, tetapi tidak ada yang menghentikan Anda untuk mengetiknya ke dalam baris perintah untuk melihat apa yang akan terjadi.
for i in {3..7}; do echo $i; done
for i in {m..q}; do echo $i; done
Menggabungkan dan Bersarang
Dua perluasan yang berdekatan tidak bertindak secara independen satu demi satu. Mereka saling beroperasi. Setiap elemen pada ekspansi pertama bekerja oleh setiap elemen pada ekspansi kedua.
echo {q..v}{1..3}
Perluasan juga bisa disarangkan. Ekspansi bertingkat akan bekerja pada elemen yang mendahuluinya.
echo {part-1,part-2{a,b,c,d},part-3}
Anda juga dapat menumpuk perluasan dengan membuat daftar perluasan rentang yang dipisahkan koma.
echo {{5..0},{1..5}}
Pembukaan dan Postscript
Anda dapat menempatkan teks sebelum dan sesudah perluasan tanda kurung agar teks tersebut disertakan dalam hasil perluasan. Teks yang diletakkan di depan perluasan disebut pembukaan, sedangkan teks yang diletakkan di belakang perluasan tanda kurung disebut postscript.
Perintah ini menggunakan pembukaan.
echo chapter{1..3}
contohnya menggunakan postscript:
echo {contents,paper,bilbiography}.md
Dan perintah ini menggunakan keduanya.
echo chapter-{1..4}.md
Memperluas Nama File dan Direktori
Seperti yang mungkin sudah Anda duga, salah satu kegunaan utama brace expansions adalah untuk membuat nama file dan direktori yang dapat diteruskan ke perintah lain. Kami telah menggunakan gema sebagai cara mudah untuk melihat dengan tepat apa yang terjadi saat perluasan dipicu. Anda dapat mengganti perintah apa pun yang menggunakan nama file atau nama direktori sebagai input dan menggunakan perluasan brace dengannya.
Untuk membuat beberapa file dengan cepat, gunakan sentuhan:
touch file-{1..4}.txt
ls *.txt
Jika Anda memiliki banyak file dengan nama dasar yang sama tetapi ekstensi file berbeda dan Anda ingin melakukan operasi pada subsetnya, brace expansions dapat membantu. Di sini, kami mengompresi subset file yang memiliki “program” sebagai nama dasar menjadi file ZIP yang disebut “source-code.zip”.
Direktori pengembangan berisi banyak file yang memiliki nama dasar yang sama dengan program utama Anda. Biasanya, Anda tidak ingin mencadangkan atau mendistribusikan file seperti file objek “.o”. Ini adalah cara yang rapi untuk hanya menyertakan jenis file yang diminati.
zip source-code program{.c,.h,.css}
Perintah ini akan membuat salinan file dan menambahkan “.bak” padanya, membuat salinan cadangan dari file asli. Hal yang menarik untuk diperhatikan adalah bahwa perluasan tanda kurung kurawal berisi daftar yang dipisahkan koma, tetapi elemen pertama kosong. Jika kami meniadakan koma, perluasan tidak akan terjadi.
cp brace/new/prog-1.c{,.bak}
ls brace/new/prog-1.c.bak
Untuk melakukan beberapa tindakan pada dua file di direktori yang berbeda, kita dapat menggunakan perluasan tanda kurung di jalur ke file.
Dalam contoh ini, direktori “brace” berisi dua subdirektori, satu disebut “baru” dan satu lagi disebut “lama”. Mereka berisi versi yang berbeda dari kumpulan file kode sumber yang sama. Kami akan menggunakan program diff untuk melihat perbedaan antara dua versi “prog-1.c.”
diff brace/{new,old}/prog-1.c
Jika Anda memiliki kerangka direktori standar yang perlu Anda buat di awal proyek, Anda dapat membuatnya dengan cepat menggunakan perluasan kurung kurawal. Opsi mkdir -p (parent) membuat direktori induk yang hilang saat direktori anak dibuat.
mkdir -p {source,build,man,help{/pages,/yelp,/images}}
tree
Anda dapat menggunakan ekspansi brace dengan wget untuk mengunduh banyak file.
Dalam perintah ini, kita akan mendownload file dari dua direktori, yang disebut “test1” dan “test2”. Setiap direktori menyimpan dua file yang disebut “gambar1” dan “gambar2”.
wget https://www.URL-of-your-choice.com/test{1,2}/picture{001,002}.jpg
Daftar file menunjukkan kepada Anda file yang diambil dan bagaimana wget mengganti nama file untuk menghindari bentrokan nama dengan file yang ada.
ls picture*.*
Rangkullah Brace
Tampaknya ekspansi brace adalah salah satu rahasia Linux yang paling dijaga. Banyak orang memberitahu saya bahwa mereka belum pernah mendengar perluasan brace, sementara yang lain memberitahu saya bahwa itu adalah salah satu trik baris perintah favorit mereka.
Cobalah dan mungkin akan menemukan jalannya ke dalam kumpulan trik masuk baris perintah Anda.