web-dev-qa-db-fra.com

ZSH alias avec paramètre

J'essaye de faire un alias avec le paramètre pour mon simple ajout/commit/Push de git.

J'ai vu que Function pouvait être utilisé comme alias, alors j'essaie, mais je ne l'ai pas fait.

avant j'avais:

alias gitall="git add . ; git commit -m 'update' ; git Push"

Mais je veux pouvoir modifier mes commits:

function gitall() {
    "git add ."
    if [$1 != ""]
        "git commit -m $1"
    else
        "git commit -m 'update'"
    fi
    "git Push"
}

(Je sais que c'est une pratique git terrible)

52
albttx

Vous ne pouvez pas créer d'alias avec des arguments *, il doit s'agir d'une fonction. Votre fonction est proche, il vous suffit de citer certains arguments au lieu de toutes les commandes, et d'ajouter des espaces dans le [].

gitall() {
    git add .
    if [ "$1" != "" ] # or better, if [ -n "$1" ]
    then
        git commit -m "$1"
    else
        git commit -m update
    fi
    git Push
}

*: La plupart des shells n'autorisent pas les arguments dans les alias, je pense que csh et ses dérivés le permettent, mais vous ne devriez pas les utiliser de toute façon .

68
Kevin

Si vous avez vraiment besoin d'utiliser un alias avec un paramètre pour une raison quelconque, vous pouvez le pirater en incorporant une fonction dans votre alias et en l'exécutant immédiatement:

alias example='f() { echo Your arg was $1. };f'

Je vois que cette approche est beaucoup utilisée dans les alias .gitconfig.

54
joelpt

J'ai utilisé cette fonction dans le fichier .zshrc:

function gitall() {
    git add .
    if [ "$1" != "" ]
    then
        git commit -m "$1"
    else
        git commit -m update # default commit message is `update`
    fi # closing statement of if-else block
    git Push Origin HEAD
}

Ici git Push Origin HEAD est responsable de pousser votre branche actuelle à distance.

A partir de la commande Invite, exécutez cette commande: gitall "commit message goes here"

Si nous exécutons simplement gitall sans message de validation, le message de validation sera update, comme l'indique la fonction.

5
Hasan Abdullah

"git add ." et les autres commandes entre " ne sont que des chaînes pour bash, supprimez le "s.

Vous voudrez peut-être utiliser [ -n "$1" ] à la place dans votre corps si.

4
Alberto Zaccagni