Lo fai nello stesso modo in cui imposteresti qualsiasi alias.
alias git-go='git commit -m "init "; git push; git status'
La situazione in cui diventa difficile non è quando un alias esegue un comando e passa argomenti a quel comando, né anche quando un alias esegue più comandi separati da ;
, ma invece è quando si desidera che un alias accetti e usi i propri argomenti della riga di comando .
Ad esempio, tutto ciò che scrivi dopo il nome di quell'alias verrà incollato alla fine e, successivamente, passato come argomento da riga di git
comando al terzo comando git status
. (In realtà non è così tanto che il seguente testo viene incollato alla fine, tanto quanto il seguente testo viene lasciato solo e il nome alias viene sostituito con la sua definizione.)
Quindi puoi eseguire il tuo alias senza argomenti, il che funziona e l'ultimo comando è git status
:
git-go
Oppure puoi eseguirlo con argomenti a cui vuoi passare git status
. Ad esempio, quando lo esegui in questo modo, l'ultimo comando è git-status --show-stash
:
git-go --show-stash
Ciò che non è possibile fare con un alias in Bash (e altre shell in stile Bourne) è di far accettare gli alias da argomenti della riga di comando e posizionarli altrove rispetto alla fine.
Ad esempio, supponiamo di voler git-go
accettare un argomento che utilizza per il messaggio di commit. Non saresti in grado di scrivere questo come alias. La soluzione sarebbe invece di scriverlo come una funzione shell:
git-go() { git commit -m "$1"; git push; git status; }
Nella definizione di una funzione di shell, i parametri posizionali $1
, $2
e così via contengono i valori degli argomenti della riga di comando passati alla funzione shell. Gli alias non hanno funzionalità che corrispondono a questo, perché l'espansione degli alias è in realtà una forma di elaborazione macro, che si svolge molto presto, quando la shell analizza un comando.
Naturalmente, puoi scriverlo come una funzione shell anche se non è necessario utilizzare i parametri posizionali nella definizione, come suggerisce Videonauth .