2010-08-20 7 views
12

J'ai créé plusieurs alias bash dans Git Bash sous Windows, pour lancer des exécutables depuis le shell bash. Le problème que je rencontre est que le bash attend un code de sortie avant de recommencer à répondre à l'entrée, car une fois que je ferme l'application qu'il a lancé, il reprend les commandes.Git Bash: Lancer une application via Alias ​​sans accrocher Bash (WIndows)

Existe-t-il un commutateur ou quelque chose que je peux inclure dans l'alias afin que bash n'attende pas le code de sortie?

Je cherche quelque chose comme ça ...

alias np=notepad.exe --exit 
+1

avez-vous essayé de l'exécuter avec un &? donc au lieu de faire > notepad.exe > notepad.exe & – George

Répondre

7

Je confirme ce que George mentions dans les commentaires:

Lancement de votre alias avec « & » vous permet d'aller sans attendre le code de retour.

alt text

Avec:

alias npp='notepad.exe&' 

vous aurez même pas taper dans le '&'.


Mais pour inclure les paramètres, je recommande un script (au lieu d'un alias) placé ne importe où dans votre chemin, dans un fichier appelé "npp":

/c/WINDOWS/system32/notepad.exe $1 & 

permettrait vous pouvez ouvrir n'importe quel fichier avec "npp anyFile" (pas besoin de '&'), sans attendre le code retour.

Un script comme:

for file in $* 
do 
    /c/WINDOWS/system32/notepad.exe $file & 
done 

lanceraient plusieurs éditeurs, un par fichier dans les paramètres:

npp anyFile1 anyFile2 anyFile3 

vous laisserais

+0

Oui, je comprends, mais que faire si je veux exécuter le bloc-notes ouvrir un fichier et ne pas attendre un code de retour? – ctorx

+0

@Matthew: l'ai eu. Voir ma réponse mise à jour. – VonC

4

Suivez la commande avec une esperluette (&) pour l'exécuter en arrière-plan.

+0

Est-il possible d'inclure le & dans l'alias? Par exemple, je veux faire ceci ... alias np = 'notepad.exe $ * &', où le $ * est les paramètres spécifiés quand l'alias est utilisé ... (le nom de fichier pour ouvrir). – ctorx

+0

Si vous éditez le fichier de configuration git ('.git/config') directement (dans la section' alias'), vous pouvez probablement y ajouter '&'. (Vous ne pouvez pas l'ajouter à partir de la ligne de commande, car il sera interprété comme faisant partie de la commande pour définir l'alias et non l'alias lui-même.) – Amber

2

I combiné la solution de VonC et ce https://stackoverflow.com/a/7131683/1020871 à obtenir un alias qui lance un exécutable et passe le long des paramètres sans verrouiller le git bash. Ajouter ce qui suit à l'.bashrc:

npp() { 
    notepad++.exe $* & 
} 

startGitk() { 
    gitk $* & 
} 
alias gitk=startGitk 

Maintenant, je peux ouvrir plusieurs fichiers notepad ++ comme npp .gitignore build.gradle ou gitk avec des arguments personnalisés comme gitk test -- .gitignore.

J'avais un alias similaire pour npp que pour gitk mais j'ai trouvé que je pouvais appeler la fonction directement. Je peux aussi appeler startGitk mais cela n'a pas fonctionné quand je l'ai nommé gitk.