Ketika Anda menggunakan ekspansi brace di bash, sesuatu seperti
echo {a,b,c}
menjadi
echo a b c
Apakah ada cara untuk mengembangkannya menjadi 3 perintah terpisah, satu untuk setiap ekspansi, sebagai gantinya?
Yang seperti itu:
echo {a,b,c}
akan menjadi
echo a
echo b
echo c
file-{r,b,g}{m,n,o}{x,y.z}.foo
maka lebih baik menggunakan formulir pendek daripada menghitung semua 27 nilai.for
bekerja untuk ini, tapi masih lebih mengetik: Peval git branch -d \{ branch-a, branch-b }\;
Berdasarkan jawaban yang dipilih Mark Mann , saya dapat menurunkan lebih lanjut contoh ini, yang sangat bagus:
Apa yang ditampilkan, adalah ketika Anda menggunakan beberapa kejadian ekspansi brace dalam satu garis, contoh asli Mark akan mencetak setiap variasi secara individual. Sebagai gantinya, saya ingin menggunakan jawabannya untuk memindahkan / mengganti nama banyak file. Untuk memastikan bahwa output cocok dengan format yang
mv
biasanya diharapkan (mv oldfilename newfilename
), saya lolos dari ekspansi brace yang kedua, sehingga tidak akan dievaluasi sampai setelaheval
perintah awal dijalankan.Ketika output di atas muncul seperti yang diharapkan, saya kemudian dapat menjalankan perintah berikut:
Terima kasih banyak untuk Mark atas jawaban aslinya. Harap beri suara pada jawabannya jika Anda suka jawabannya memungkinkan saya untuk melakukan :-)
sumber
sumber