Exécution de scripts shell à partir du Dock OS X?

Comment configurer un script shell à exécuter depuis le dock Mac OSX? Il semble que le simple fait de créer un raccourci ouvrira le fichier dans mon éditeur. Y a-t-il un drapeau que je dois définir quelque part pour lui dire de s’exécuter au lieu de l’ouvrir pour le modifier?

Vous pouvez créer un stream de travail Automator en une seule étape – “Run Shell Script”

Puis File > Save As et modifiez le format de fichier en “Application”. Lorsque vous ouvrez l’application, elle exécute l’étape du script Shell, en exécutant la commande, puis en la quittant.

L’avantage de ceci est qu’il est très simple à faire, et vous pouvez très facilement obtenir des entrées utilisateur (par exemple, en sélectionnant un groupe de fichiers), puis les transmettre à l’entrée du script shell (soit à stdin, soit en argument).

(Automator est dans votre dossier /Applications !)

Exemple de workflow

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 vers example.sh.app/Contents/MacOS/example.sh . Vous pouvez placer l’application dans votre dock comme n’importe quel autre et l’exécuter en un clic.

Si vous avez besoin d’avoir la fenêtre du terminal affichée, je n’ai pas de solution simple. Vous pourriez probablement faire quelque chose avec Applescript, mais ce n’est pas très propre.

Je sais que c’est vieux mais au cas où cela serait utile aux autres:

Si vous avez besoin de lancer un script et que vous voulez que le terminal apparaisse pour que vous puissiez voir les résultats que vous pouvez faire, comme le dit Abyss Knight, changez l’extension en .command. Si vous double-cliquez dessus, cela ouvrira une fenêtre de terminal et se lancera.

J’avais toutefois besoin de ceci pour fonctionner à partir d’automator ou de appleScript. Donc, pour que cela ouvre un nouveau terminal, la commande que j’ai exécutée à partir de “exécuter le script shell” était “open myShellScript.command” et s’ouvrait dans un nouveau terminal.

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 suffixe .app :

     mv your-shell-script.sh your-shell-script.app 
  4. Faites glisser le script sur le dock OSX.
  5. Renommez votre script en un suffixe .sh :

     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 du shell à ouvrir avec le terminal.

Maintenant, lorsque vous cliquez sur le script dans le Dock, une fenêtre de terminal apparaît et exécute votre script.

Bonus: pour que le terminal se ferme lorsque votre script est terminé, ajoutez la exit 0 à la fin et modifiez les parameters du terminal pour “fermer le shell si vous le quittez proprement”, comme il est dit dans cette réponse SO .

Tant que votre script est exécutable et n’a pas d’extension, vous pouvez le faire glisser tel quel sur le côté droit (côté Document) du Dock et il sera exécuté dans une fenêtre de terminal lorsque vous cliquerez au lieu d’ouvrir un éditeur.

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

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 script AppleScript pour exécuter le shell.

Comme l’a mentionné Joe, la création du script shell, puis la création d’un script AppleScript pour appeler le script shell, 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 de shell, pour mon exemple “StartKeepass.sh”

Script Apple

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

    do shell script "sh /Volumes/Media/~Users/me/Software/StartKeepass.sh" user name "" password "" with administrator privileges

    • do shell script – la 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 peux omettre le script shell et exécuter ma commande mono ici)
    • user name – déclare à Applescript que vous souhaitez exécuter la commande en tant qu’utilisateur spécifique
    • " – remplacez par votre nom d’utilisateur (en gardant les guillemets) ex” josh ”
    • password – déclare votre mot de passe
    • "" – remplacez par votre mot de passe (en gardant les guillemets) ex “mypass”
    • with administrative privileges – déclare que vous voulez exécuter en tant qu’administrateur

Créez votre .APP

  1. enregistrez votre script sous le nom filename.scpt, dans mon cas RunKeepass.scpt

  2. enregistrer sous … votre script et changer le format du fichier en application, résultant en RunKeepass.app dans mon cas

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

Dans l’éditeur de script:

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

Enregistrez en tant que bundle d’application.

Tant que tout ce que vous voulez faire, c’est obtenir l’effet du script, cela fonctionnera très bien. Vous ne verrez ni STDOUT ni STDERR.

Quelqu’un a écrit …

Je viens de définir tous les fichiers qui se terminent par “.sh” pour ouvrir avec Terminal. Cela fonctionne bien et vous n’avez pas à changer le nom de chaque script shell que vous voulez exécuter.