Byla položena podobná otázka, ale protože jsem nový v Unix
odpověď mi nebyla jasná vzhledem ke kontextu. Co chci udělat, je předat výstup jednoho příkazu jako argument druhému. Používám git pro ovládání zdroje a pracuji na třech různých větvích.
Kdykoli potřebuji provést commit, musím zkontrolovat svou větev a poté zadat odpovídající příkaz jako
git pull --rebase origin <branch-name>
Chtěl jsem napsat alias jako git-rebase
a udělá to tak, že nejprve spustí git branch
.
Výstup větve git vypadá takto
experiment
*master
new feature
Takže pokud máme dvě větve kromě hlavní větve, zobrazí se všechny větve a aktuální větev bude označena hvězdičkou. Chci extrahovat čáru označenou hvězdičkou a poté předat její výstup výše uvedenému příkazu.
Také bych chtěl potlačit výstup příkazu git branch
. Nedělám to proto, že bych byl příliš líný napsat celý příkaz, ale proto, že bych se rád dozvěděl více o síle unix bash. Doufám, že se z toho něco naučím
Přijatá odpověď:
Nejprve musíte promasírovat git branch
výstup do použitelného formátu
$ git branch
experiment
* master
new feature
$ git branch | awk '/^\* / { print $2 }'
master
Nyní to chcete použít jako argument:
$ git pull --rebase origin $(git branch | awk '/^\* / { print $2 }')
(nebo můžete použít zpětné zaškrtnutí jako v odpovědi psusi).
Toto by mělo buďte v pořádku, příkaz awk by měl vždy odpovídat přesně jednomu řádku a předpokládám, že v názvech větví nemůžete mít mezery. U čehokoli mnohem komplikovanějšího bych to pravděpodobně zabalil do funkce (nebo skriptu), abyste mohli provést kontrolu středních hodnot.