web-dev-qa-db-fra.com

Exécuter des scripts shell à partir du dock OS X?

Comment configurer un script Shell à exécuter à partir du dock Mac OSX? Il semble que la simple création d'un raccourci ouvrira le fichier dans mon éditeur. Y a-t-il un drapeau que je dois placer quelque part pour lui dire de fonctionner au lieu de l'ouvrir pour le modifier?

153
Wilco

Vous pouvez créer un flux de travail Automator en une seule étape: "Exécuter un script shell".

Ensuite File > Save As et changez le format de fichier en "Application". Lorsque vous ouvrez l'application, il exécute l'étape de script shell, exécutant la commande, puis se terminant une fois terminée.

L'avantage de ceci est que c'est vraiment simple à faire, et vous pouvez très facilement obtenir une entrée utilisateur (par exemple, en sélectionnant un groupe de fichiers), puis la passer à l'entrée du script shell (soit à stdin ou comme arguments).

(Automator est dans votre /Applications dossier!)

Example workflow

175
dbr

Si vous n'avez pas besoin d'une fenêtre de terminal, vous pouvez transformer n'importe quel fichier exécutable en application simplement en déplaçant example.sh à example.sh.app/Contents/MacOS/example.sh. Vous pouvez placer l'application sur votre dock comme n'importe quel autre et l'exécuter en un clic.

Si vous avez besoin d'afficher la fenêtre du terminal, je n'ai pas de solution simple. Vous pouvez probablement faire quelque chose avec Applescript, mais ce n'est pas très propre.

44
Jeremy Banks

Sur OSX Mavericks:

  1. Créez votre script shell.
  2. Rendez votre script shell exécutable:

    chmod +x your-Shell-script.sh
    
  3. Renommez votre script pour avoir un .app suffixe:

    mv your-Shell-script.sh your-Shell-script.app
    
  4. Faites glisser le script vers le dock OSX.
  5. Renommez votre script en .sh suffixe:

    mv your-Shell-script.app your-Shell-script.sh
    
  6. Cliquez avec le bouton droit sur le fichier dans le Finder, puis cliquez sur l'option "Obtenir des informations".
  7. Au bas de la fenêtre, définissez le script Shell pour qu'il s'ouvre avec le terminal.

Maintenant, lorsque vous cliquez sur le script dans le dock, une fenêtre de terminal s'ouvre et exécute votre script.

Bonus: pour que le terminal se ferme lorsque votre script est terminé, ajoutez exit 0 à la fin et modifiez les paramètres du terminal pour "fermer le Shell si vous le quittez proprement" comme il est indiqué dans this SO answer .

21
stiemannkj1

Je sais que c'est vieux, mais au cas où cela aiderait les autres:

Si vous avez besoin d'exécuter un script et que le terminal s'affiche pour que vous puissiez voir les résultats, vous pouvez le faire comme le dit Abyss Knight et changer l'extension en .command. Si vous double-cliquez dessus, une fenêtre de terminal s'ouvrira et s'exécutera.

J'avais cependant besoin de cela sous Automator ou AppleScript. Donc, pour que cela ouvre un nouveau terminal, la commande que j'ai exécutée depuis "run shell script" était "open myShellScript.command" et elle s'ouvrait dans un nouveau terminal.

17
Jason Tholstrup

Tant que votre script est exécutable et ne possède aucune extension, vous pouvez le faire glisser tel quel sur le côté droit (côté Document) du Dock. Il s'exécutera dans une fenêtre de terminal lorsque vous cliquez dessus au lieu d'ouvrir un éditeur.

Si vous souhaitez avoir une extension (comme foo.sh), vous pouvez accéder à la fenêtre d’information sur le fichier dans le Finder et modifier l’application par défaut de ce script particulier (TextEdit, TextMate, quelle que soit la valeur par défaut définie sur votre ordinateur). .sh) vers le terminal. Il va alors simplement exécuter au lieu d'ouvrir dans un éditeur de texte. Encore une fois, vous devrez le faire glisser du côté droit du Dock.

7
Jason Coco

Je pense que ce fil peut être utile: http://forums.macosxhints.com/archive/index.php/t-70973.html

Pour paraphraser, vous pouvez le renommer avec l'extension .command ou créer un AppleScript pour exécuter le shell.

5
willasaywhat

Comme Joe l'a mentionné, la création du script Shell, puis celle d'un script Applescript pour appeler le script Shell permettent d'accomplir cette tâche, ce qui est très pratique.

Script shell

  1. Créez votre script Shell dans votre éditeur de texte préféré, par exemple:

    mono "/Volumes/Media/~Users/me/Software/keepass/keepass.exe"

    (cela exécute l'exécutable w32, en utilisant le framework mono)

  2. Enregistrer le script Shell, pour mon exemple "StartKeepass.sh"

Apple Script

  1. Ouvrez l'éditeur AppleScript et appelez le script shell

    do Shell script "sh /Volumes/Media/~Users/me/Software/StartKeepass.sh" user name "<enter username here>" password "<Enter password here>" with administrator privileges

    • do Shell script - Commande applescript pour appeler des commandes externes du shell
    • "sh ...." _ - ceci est votre script Shell (chemin complet) créé à la première étape (vous pouvez également exécuter des commandes directes, je pourrais omettre le script Shell et simplement exécuter ma commande mono ici)
    • user name - déclare à AppleScript que vous souhaitez exécuter la commande en tant qu'utilisateur spécifique
    • "<enter username here> _ - remplace par votre nom d'utilisateur (en gardant les guillemets) ex "josh"
    • password - déclare à AppleScript votre mot de passe
    • "<enter password here>" _ - remplace par votre mot de passe (en conservant les guillemets) ex "mypass"
    • with administrative privileges - déclare que vous souhaitez exécuter en tant qu'administrateur

Créez votre .APP

  1. enregistrer votre script AppleScript sous le nom nom de fichier.scpt, dans mon cas, RunKeepass.scpt

  2. enregistrer sous ... votre script AppleScript et changer le format de fichier en application, ce qui entraîne RunKeepass.app dans mon cas

  3. Copiez votre fichier d'application dans votre dossier d'applications

4
CJoshDoll

Dans l'éditeur de script:

do Shell script "/full/path/to/your/script -with 'all desired args' "

Enregistrer en tant que lot d'application.

Tant que tout ce que vous voulez faire est d'obtenir l'effet du script, cela fonctionnera correctement. Vous ne verrez pas STDOUT ou STDERR.

4
Joe McMahon