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 kesalahan menghindari dengan mengetikkan kurang.
brace Ekspansi
Sebelum shell Bash mengeksekusi perintah di jendela terminal atau baris dalam naskah, ia memeriksa apakah perlu untuk melakukan substitusi apapun pada perintah. nama variabel diganti dengan nilai-nilai mereka, alias diganti dengan perintah mereka singkatan sedang untuk, dan perluasan apapun dilakukan. ekspansi Brace merupakan salah satu bentuk ekspansi didukung oleh Bash.
ekspansi Brace tersedia dalam kerang modern, tapi mungkin hilang dari beberapa kerang lama. Jika Anda akan digunakan ekspansi brace di script, pastikan bahwa Anda menjalankan shell bahwa ekspansi mendukung penjepit, seperti Bash:
Kami akan menggunakan Bash untuk contoh kita.
Menghasilkan daftar string mungkin tampak lebih dari kebaruan daripada manfaat, tapi memang menawarkan beberapa fungsi yang dapat menghemat waktu dan keystrokes. Seringkali, hal itu dapat memberikan yang sederhana dan solusi elegan untuk masalah atau kebutuhan.
Ekspansi sederhana
Sebuah ekspansi penjepit yang terkandung antara sepasang kawat gigi “{}”. Ini bisa menjadi daftar item dipisahkan koma atau specifier jangkauan. Spasi tidak diperbolehkan di dalam kurung kecuali Anda sudah dibungkus string dalam tanda kutip “
"
. "
Untuk daftar dipisahkan koma, proses ekspansi mengambil setiap elemen pada gilirannya dan lolos ke perintah panggilan. Dalam contoh ini, itu
gema
yang hanya
mencetak mereka di jendela terminal
. Perhatikan bahwa koma diabaikan.
gema {satu, dua, tiga, empat}
Daftar dapat kata-kata atau angka.
gema {1,2,3,4}
Urutan elemen daftar benar-benar sewenang-wenang.
echo (4,2,3,1)
Berbagai ekspansi memiliki awal dan karakter ujung terhubung dengan dua periode”
..
”Tanpa spasi. Semua elemen daftar hilang disediakan secara otomatis oleh ekspansi sehingga seluruh rentang dari awal karakter ke karakter akhir dibuat.
Ini akan mencetak angka dari 1 sampai 10.
gema {1..10}
penomoran adalah sewenang-wenang. Ini tidak harus mulai dari satu.
gema {3..12}
Rentang dapat ditentukan sehingga mereka berjalan mundur. Ini akan menghasilkan daftar dari lima ke satu.
gema {5..1}
Rentang dapat mencakup angka negatif.
gema {4 ..- 4}
Seperti sebelumnya kami menunjukkan, kisaran memiliki awal dan akhir karakter . Ini tidak harus berupa angka. Hal ini dapat surat.
gema {q..v}
Surat-surat dapat berjalan mundur, juga.
gema {f..a}
Menggunakan Brace Ekspansi dengan Loops
Anda dapat menggunakan ekspansi penjepit dengan rentang dalam loop di script.
untuk saya di {3..7}
melakukan
echo $ i
dilakukan
rentang ekspansi Brace membiarkan Anda menggunakan karakter sebagai variabel loop.
untuk saya di {} m..q
melakukan
echo $ i
dilakukan
Loop biasanya digunakan dalam skrip, tapi tidak ada yang menghentikan Anda dari mengetik mereka ke dalam baris perintah untuk melihat apa yang akan terjadi.
untuk saya di {3..7}; melakukan echo $ i; dilakukan
untuk saya di {m..q}; melakukan echo $ i; dilakukan
Concatenating dan Nesting
Dua ekspansi yang berdekatan tidak bertindak secara independen satu demi satu. Mereka beroperasi. Setiap elemen dalam ekspansi pertama bertindak dengan setiap elemen dalam ekspansi kedua.
gema {q..v} {1..3}
Ekspansi juga dapat bersarang. Sebuah ekspansi bersarang akan bertindak pada elemen segera mendahuluinya.
gema {bagian-1, bagian-2 {a, b, c, d}, bagian-3}
Anda juga dapat ekspansi sarang dengan membuat daftar dipisahkan koma ekspansi jangkauan.
gema {{5..0}, {1..5}}
Pembukaan dan Postscript
Anda dapat menempatkan teks sebelum dan sesudah ekspansi brace untuk memiliki teks yang termasuk dalam hasil ekspansi. Teks dimasukkan ke dalam depan ekspansi disebut pembukaan, sedangkan teks ditempatkan di belakang ekspansi brace disebut PostScript.
Perintah ini menggunakan pembukaan.
echo bab {1..3}
Contoh ini menggunakan PostScript:
gema {konten, kertas, bilbiography} .md
Dan perintah ini menggunakan keduanya.
echo bab- {1..4} .md
Memperluas nama file dan direktori
Seperti yang mungkin sudah Anda duga sekarang, salah satu penggunaan utama ekspansi brace adalah membuat nama file dan direktori yang dapat diteruskan ke perintah lain. Kami sudah menggunakannya
gema
sebagai cara yang mudah untuk melihat dengan tepat apa yang terjadi ketika ekspansi dipicu. Anda dapat mengganti perintah apa pun yang mengambil nama file atau nama direktori sebagai input dan menggunakan ekspansi brace dengannya.
Dengan cepat
Buat beberapa file
, menggunakan
menyentuh
:
sentuh file- {1..4} .txt
ls * .txt
Jika Anda memiliki banyak file dengan nama dasar yang sama tetapi ekstensi file yang berbeda dan Anda ingin melakukan operasi pada subset dari mereka, ekspansi brace dapat membantu. Di sini, kami mengompres subset file yang memiliki "program" sebagai Basename ke file zip yang disebut "Sumber-Code.zip."
Direktori pengembangan berisi banyak file yang akan memiliki Basename yang sama dengan program utama Anda. Biasanya, Anda tidak ingin membuat cadangan atau mendistribusikan file seperti file objek ".o". Ini adalah cara yang rapi untuk hanya menyertakan jenis file yang menarik.
Program kode sumber zip {.c, .h, .css}
Perintah ini akan membuat salinan file dan menambahkan ".bak" untuk itu, membuat salinan cadangan file asli. Poin yang menarik untuk dicatat adalah bahwa ekspansi brace berisi daftar yang dipisahkan koma, tetapi elemen pertama kosong. Jika kami tidak memasukkan koma, ekspansi 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 ekspansi brace di jalur ke file.
Dalam contoh ini, direktori "Brace" berisi dua subdirektori, satu disebut "baru" dan satu yang disebut "lama." Mereka mengandung versi yang berbeda dari set file sumber yang sama. Kami akan menggunakan
diff.
Program untuk melihat perbedaan antara dua versi "prog-1.c."
Diff Brace / {New, Old} /prog-1.c
Jika Anda memiliki kerangka standar direktori yang perlu Anda buat pada awal proyek, Anda dapat membuatnya dengan cepat menggunakan ekspansi brace. NS
mkdir.
-P
Opsi (induk)
menciptakan direktori induk yang hilang
ketika direktori anak dibuat.
mkdir -p {sumber, build, man, help {/ halaman, / yelp, / gambar}}
Pohon
Anda dapat menggunakan ekspansi brace dengan
wget.
ke
Unduh beberapa file
.
Dalam perintah ini, kita akan mengunduh file dari dua direktori, yang disebut "test1" dan "test2." Setiap direktori menampung dua file yang disebut "Picture1" dan "Picture2."
wget https://www.url-of-your-choice.com/test{1,2}/picture{001,002}.jpg
Daftar file menunjukkan file yang diambil dan bagaimana
wget.
Menangkan nama file untuk menghindari bentrokan nama dengan file yang ada.
ls gambar *. *
Merangkul brace
Tampaknya ekspansi brace adalah satu lagi Rahasia Tertahankan Linux . Banyak orang mengatakan kepada saya bahwa mereka belum pernah mendengar ekspansi penjepit, sementara yang lain memberi tahu saya bahwa itu adalah salah satu trik baris komando favorit mereka.
Cobalah dan itu mungkin menemukan jalannya ke dalam set trik perintah baris perintah Anda.