È stata posta una domanda simile, ma poiché sono nuovo di Unix
la risposta non mi era chiara a causa del contesto. Quello che voglio fare è passare l'output di un comando come argomento a un altro. Sto usando git per il controllo del codice sorgente e lavoro su tre rami diversi.
Ogni volta che devo impegnarmi devo controllare il mio ramo e quindi dare il comando corrispondente come
git pull --rebase origin <branch-name>
Volevo scrivere un alias come git-rebase
e quello che farebbe prima è che eseguirà git branch
.
L'output di git branch è simile a questo
experiment
*master
new feature
Quindi, se abbiamo due rami oltre al ramo principale, mostrerà tutti i rami e il ramo corrente sarà contrassegnato da una stella. Voglio estrarre la linea contrassegnata da una stella e quindi passare l'output di questo al comando precedente.
Inoltre vorrei sopprimere l'output del comando git branch
. Non lo sto facendo perché sono troppo pigro per digitare l'intero comando, ma perché vorrei saperne di più sulla potenza di unix bash. Sperando di imparare qualcosa da esso
Risposta accettata:
Per prima cosa, devi massaggiare il git branch
output in un formato utilizzabile
$ git branch
experiment
* master
new feature
$ git branch | awk '/^\* / { print $2 }'
master
Ora, vuoi usarlo come argomento:
$ git pull --rebase origin $(git branch | awk '/^\* / { print $2 }')
(oppure puoi usare i backtick come nella risposta di psusi).
Questo dovrebbe va bene, il comando awk dovrebbe sempre corrispondere esattamente a una riga e presumo che non puoi avere spazi nei nomi dei rami. Per qualcosa di molto più complicato, probabilmente lo avvolgerei in una funzione (o in uno script) in modo che tu possa fare un po' di controllo sui valori intermedi.