Vous procédez de la même manière que vous définiriez n'importe quel alias.
alias git-go='git commit -m "init "; git push; git status'
La situation où cela devient délicat n'est pas lorsqu'un alias exécute une commande et passe des arguments à cette commande, ni même lorsqu'un alias exécute plusieurs commandes séparées par ;
, mais plutôt lorsque vous voulez qu'un alias accepte et utilise ses propres arguments de ligne de commande .
Par exemple, tout ce que vous écrivez après le nom de cet alias sera collé à la fin, et donc passé comme arguments de ligne de commande à la troisième git
commande, après git status
. (Vraiment, ce n'est pas tant que le texte suivant est collé à la fin, mais plutôt que le texte suivant est laissé seul et que le nom d'alias est remplacé par sa définition.)
Vous pouvez donc exécuter votre alias sans arguments, ce qui fonctionne, et la dernière commande est git status
:
git-go
Ou vous pouvez l'exécuter avec les arguments que vous souhaitez transmettre git status
. Par exemple, lorsque vous l'exécutez de cette façon, la dernière commande est git-status --show-stash
:
git-go --show-stash
Ce que vous ne pouvez pas faire avec un alias dans Bash (et d'autres shells de style Bourne), c'est de faire en sorte que l'alias accepte les arguments de ligne de commande et les place ailleurs qu'à la fin.
Par exemple, supposons que vous vouliez git-go
accepter un argument qu'il utilise pour le message de validation. Vous ne pourriez pas écrire ceci en tant qu'alias. La solution serait de l'écrire en tant que fonction shell à la place:
git-go() { git commit -m "$1"; git push; git status; }
Dans la définition d'une fonction d'enveloppe, les paramètres de position $1
, $2
et ainsi de suite maintiennent les valeurs des arguments de ligne de commande transmis à la fonction d'enveloppe. Les alias n'ont aucune fonctionnalité qui correspond à cela, car l'expansion des alias est vraiment une forme de traitement de macro, qui a lieu très tôt, lorsque le shell analyse une commande.
Vous pouvez bien sûr l'écrire en tant que fonction shell même si vous n'avez pas besoin d'utiliser des paramètres de position dans la définition, comme le suggère Videonauth .