Pertanyaan serupa telah diajukan, tetapi karena saya baru mengenal Unix
jawabannya tidak jelas bagi saya karena konteksnya. Yang ingin saya lakukan adalah meneruskan output dari satu perintah sebagai argumen ke yang lain. Saya menggunakan git untuk kontrol sumber dan bekerja di tiga cabang berbeda.
Kapan pun saya perlu melakukan, saya harus memeriksa cabang saya dan kemudian memberikan perintah yang sesuai sebagai
git pull --rebase origin <branch-name>
Saya ingin menulis alias sebagai git-rebase
dan apa yang akan dilakukannya adalah yang pertama akan mengeksekusi git branch
.
Output dari git branch terlihat seperti ini
experiment
*master
new feature
Jadi jika kita memiliki dua cabang selain cabang master maka itu akan menampilkan semua cabang dan cabang saat ini akan ditandai bintang. Saya ingin mengekstrak garis bertanda bintang dan kemudian meneruskan output ini ke perintah di atas.
Saya juga ingin menekan output dari perintah git branch
. Saya tidak melakukan ini karena saya terlalu malas untuk mengetik seluruh perintah, tetapi karena saya ingin mempelajari lebih lanjut tentang kekuatan unix bash. Berharap untuk belajar sesuatu darinya
Jawaban yang Diterima:
Pertama, Anda perlu memijat git branch
output ke dalam format yang bisa digunakan
$ git branch
experiment
* master
new feature
$ git branch | awk '/^\* / { print $2 }'
master
Sekarang, Anda ingin menggunakannya sebagai argumen:
$ git pull --rebase origin $(git branch | awk '/^\* / { print $2 }')
(atau Anda dapat menggunakan backticks seperti pada jawaban psusi).
Ini harus ok, perintah awk harus selalu cocok dengan tepat satu baris, dan saya berasumsi Anda tidak dapat memiliki spasi dalam nama cabang. Untuk hal yang jauh lebih rumit, saya mungkin akan membungkusnya menjadi sebuah fungsi (atau skrip) sehingga Anda dapat melakukan pemeriksaan kewarasan pada nilai antara.