La plupart de mes alias sont de cette forme: alias p='pwd'
Je veux alias git commit
pour qu'il le fassegit commit -v
Mais essayer de créer un alias avec un espace donne une erreur:
$ alias 'git commit'='git commit -v'
-bash: alias: `git commit': invalid alias name
git config
nongit-config
git
commandes existantes par des alias, avec juste un peu de script shell. (Je ne poste pas ce commentaire comme une critique, BTW. Cette réponse a été publiée près d'un an après la vôtre! Je la publie simplement dans l'espoir que les gens pourraient la trouver utile.)Vous parlez d'une commande qui comprend un espace, mais ici la commande est
git
et il n'y a pas d'espace là-dedans.Pour appeler une commande git commit , vous devez l'écrire
Généralement, les commandes n'ont pas d'espace dans leurs noms pour cette raison qu'il est fastidieux de les appeler dans un shell, donc je ne pense pas que vous trouverez une telle commande sur votre système.
csh, tcsh ou zsh vous permettra d'alias l'un de ceux ci-dessus, mais pas bash ou ksh (bien que pdksh vous le permette mais vous ne vous autoriserez pas à les utiliser). En zsh:
Fera de la
git command
commande (lorsqu'elle est appelée en tant que'git command'
(avec les guillemets simples)) un alias pour lagit
commande avec les argumentscommit
et-v
. Ce n'est pas ce que vous cherchiez, je suppose.Étant donné que
alias
vous ne pouvez créer que des commandes d' alias , tout ce que vous pouvez alias ici est lagit
commande, et vous devez l'aliaser à quelque chose qui insère un "-v" après "commit" dans sa liste d'arguments. Le mieux serait d'aller avec la solution de @ jw013 mais si pour une raison quelconque vous ne pouvez pas ou ne voudriez pas, au lieu d'utiliser un alias, vous pouvez utiliser une fonction pour faire le travail:la source
Dans Bash, vous ne pouvez pas créer d'alias pour une commande contenant des espaces.
Cependant, j'utilise la fonction suivante dans mon .bashrc comme solution de contournement.
Voici comment cela fonctionne: vous commencez par la commande que vous souhaitez appeler. Dans mon cas, ça l'est
sudo
.Ensuite, vous mentionnez quels paramètres cela prendrait. Dans ce cas
pacman -Syu
,.Si, déclenché, quelle commande doit-il exécuter? Dans la déclaration ci-dessus, il est
pacup.sh
.Sinon, quelle commande doit être exécutée,
sudo $@
.$@
est, comme vous l'aurez deviné, la liste des paramètres de la commande.Donc, en faisant la commande pour votre cas particulier, ce serait:
Cependant, cette solution est pour le cas plus général où vous souhaitez alias des commandes avec des espaces en eux.
Dans votre cas spécifique, je vous recommande d'utiliser la solution de jw013 pour alias vos commandes git en utilisant
git-config
la source
if [[ $1 == 'commit' ]]...
? L'expansion de $ @ peut avoir plus d'arguments pour la validation que vous souhaitez réellement conserver.Depuis la page de manuel bash alias
Donc, comme seul le premier mot est vérifié, vous ne pouvez pas avoir d'alias avec plusieurs mots. Dans cette question de super utilisateur , une solution de contournement utilisant une fonction est fournie:
Il peut être adapté à
git
.la source
\ls
contourne un alias pourls
.[_!%,@]
) doit être développé. Cela n'interdit pas les extensions comme l'aliasing de zsh de '\ ls', ou l'aliasing de ksh / dash / bash / zsha-b
sinon il n'existerait pas de shell POSIX unique. Il dit simplement qu'un script portable (pas un shell) ne devrait pas utiliser un tel alias.'git commit'
en position de commande dans un shell POSIX, il doit appeler un utilitaire intégré, une fonction ou une commande externe.Même si la bonne solution consiste à utiliser des alias comme jw013 suggéré, pour créer des alias avec des espaces, vous pouvez imbriquer des alias.
Par exemple, j'ai un alias pour supprimer la branche localement et à distance, mais je voudrais que l'utilisateur spécifie toujours la branche:
la source
Dans cet exemple, cela devrait fonctionner:
Mais avec vos commandes:
la source