GNU/Linux >> Linux Esercitazione >  >> Linux

Come passare l'output di un comando come argomento a un altro?

È 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.


Linux
  1. Output del comando Linux come parametro di un altro comando

  2. Come posso passare un argomento della riga di comando durante l'avvio di GDB in Linux?

  3. Come passare l'argomento in Expect tramite la riga di comando in uno script di shell

  4. Come copiare i commit da un repository Git a un altro?

  5. Come passare l'output del comando come diversi argomenti a un altro comando

Come cambiare ramo su Git

[Suggerimenti Bash] Come fare cd e ls in un comando

[Suggerimenti Bash] Come cp o mv e cd in un comando

Come passare la password al comando SSH in Linux

Come controllare la versione con Git sulla riga di comando

Come passare l'output del comando come più argomenti a un altro comando