2017-10-05 3 views
0

Chaque fois que j'ouvre emacs, je veux toujours l'exécuter en arrière-plan. Comment puis-je faire en sorte que chaque fois que je tape "emacs xyz", le shell lance automatiquement "emacs xyz &"?Comment toujours ajouter une esperluette pour certaines commandes? (MacOS/bash)

+3

SO est pour la programmation des questions, pas des questions sur l'utilisation ou la configuration de Linux. SuperUser.com ou unix.stackexchange.com seraient de meilleurs endroits pour des questions comme celle-ci. – Barmar

+0

Définissez une fonction shell qui fait ce que vous voulez, et mettez-la dans votre '.bashrc'. – Barmar

+2

Je ne décrirais pas cela comme "l'ajout d'une esperluette", mais comme assurant que votre commande est exécutée en arrière-plan. Quand vous parlez de l'ajout, cela a des implications sur la façon dont il interagit avec d'autres syntaxes qui ne tiennent pas vraiment (tout comme un alias, en faisant string * prefixing *, peut changer la façon dont le code est analysé, être capable de modifier le comportement de l'analyse syntaxique, et ce n'est pas vraiment un élément de ce que vous cherchez). –

Répondre

8

La fonction shell suivante (qui peut être mis en .bashrc) fait ce que vous vous demandez:

emacs() { command emacs "[email protected]" & } 

command assure que le réel (ex ternal) emacs La commande est invoquée plutôt que d'avoir la fonction appelée elle-même récursivement. "[email protected]" se développe à la liste des arguments, s'assurant qu'ils sont passés à travers.

1

Vous pouvez faire un simple script bash nommé tout ce que vous voulez, disons emax dans cet exemple:

#!/usr/bin/env bash 
emacs "[email protected]" & 

Et puis invoquer comme emax xyz

+0

Cela a fini par travailler pour moi. J'ai ensuite alias "emacs" à "emax". Merci! –

+0

Vous pouvez également avoir le script invoquer '/ usr/bin/emacs' ou avoir une ligne comme' PATH =/bin:/usr/bin' après le shebang - à quel point il pourrait être nommé 'emacs' lui-même, donc Tant qu'il est installé dans un endroit qui est avant le vrai binaire dans votre chemin. Un alias n'est pas idéal: il ne fonctionne pas dans autant d'endroits qu'une fonction exportée ou un script. (La réponse de John ici fonctionnera même avec 'find ... -exec emax {} +', ou '-exec emacs' si, bien sûr, vous nommez le shim' emacs'; 'find -exec' ne reconnaît pas les alias du tout). –