GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Melewati Output Dari Satu Perintah Sebagai Argumen ke Yang Lain?

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.


Linux
  1. Bagaimana Cara Melewati Argumen Baris Perintah Menjadi Skrip Shell?

  2. Bagaimana Perintah Su -c "..." Ini Tampaknya Melewati Dua Perintah, Bukan Satu?

  3. Bagaimana cara menambahkan output ke file?

  1. Keluaran perintah Linux sebagai parameter dari perintah lain

  2. Bagaimana cara menyampaikan argumen baris perintah saat memulai GDB di Linux?

  3. Cara meneruskan output perintah sebagai beberapa argumen ke perintah lain

  1. Cara Menetapkan Output dari Perintah Linux ke Variabel

  2. Cara Menyimpan Output Perintah ke File di Linux

  3. Lewati Output Perintah Sebelumnya Ke Berikutnya Sebagai Argumen?