OSX «ouvrir avec» le script bash

8

J'ai un script bash, potentiellement beaucoup d'entre eux en fait, avec lequel j'aimerais pouvoir ouvrir des fichiers dans le viseur d'OSX.

C'est un concept vraiment très simple, mais pour une raison quelconque, les scripts bash sont grisés dans la boîte de dialogue "Ouvrir avec" du Finder.

Je crois comprendre qu'il existe différentes façons d'utiliser applescript ou d'empaquetage comme application ... mais je n'ai pas réussi à comprendre tout cela et je ne veux pas vraiment avoir à choisir une autre langue juste pour cette tâche triviale - quelqu'un pourrait-il me nourrir avec une cuillère?

Merci!

riches
la source

Réponses:

11

Ce n'est pas possible. Launch Services fonctionne avec des identifiants d'application et les scripts bash n'en ont pas.

Vous devez créer une application wrapper à l'aide d'Automator.

  1. Lancer Automator
  2. Sélectionnez l' application
  3. Recherchez l' action Run Shell Script et ajoutez-la à droite.
  4. Passer l'entrée comme arguments
  5. Mettez votre script là-dedans
  6. Enregistrer quelque part

Voici ma version, en utilisant l' utilitaire de ligne de commande Growl :

entrez la description de l'image ici

Résultat:

entrez la description de l'image ici


Vous pouvez voir l'effet de cette modification ~/Library/Preferences/com.apple.LaunchServices.plistlorsque vous changez tout :

entrez la description de l'image ici

("Test" est le nom que j'ai donné à mon application Automator)

Daniel Beck
la source
Merci. Je lui ai donné un tourbillon, mais j'essaie d'ouvrir avec l'application créée par Automator, elle dit simplement que l'action "Exécuter le script Shell" a rencontré une erreur. Vérifiez les propriétés de l'action et essayez à nouveau d'exécuter le workflow. Quel est le message d'erreur le moins utile que j'ai vu depuis un certain temps!
riche
@Rich Fonctionne-t-il avec le script par défaut dans l'action d'exécution du script shell? Ou même pas alors? Vous êtes-vous souvenu de changer la préférence d' entrée de passe ? Essayez-vous de double-cliquer sur votre application, de faire glisser des fichiers sur votre application ou d'ouvrir uniquement le fichier associé? Que se passe-t-il si vous démarrez les autres façons?
Daniel Beck
Merci. Je ne sais pas comment vous verriez la sortie de celle par défaut car elle appelle simplement cat, mais il semble que cela n'ait pas commis d'erreur. Plutôt que d'appeler mon script à partir d'un emplacement non standard, j'ai créé un script dans / usr / local / bin, puis j'ai découvert que si j'essayais de l'exécuter, il se plaignait qu'il y avait trop de niveaux de liens symboliques (1?! ) Je viens donc de copier le script à la place et il semble maintenant fonctionner. Merci!
riche
1

J'ai suivi les instructions de Daniel Beck avec quelques modifications et l'ai fait fonctionner pour les fichiers URL que je voulais ouvrir dans Chrome (Firefox fonctionnerait également) sur un Mac.

Le script que j'ai utilisé est:

sed 's/^URL=/URL=/' "$1" | grep -m 1 '^URL=' | sed 's/^URL=//' | tr -d '\r' | xargs open -a "Google Chrome"

Cela analyse la ligne URL = d'un fichier URL typique qui ressemble à:

[InternetShortcut]
URL=http://www.docircuits.com/pricing
IDList=
HotKey=0
IconFile=O:\Apps\Firefox\Data\profile\shortcutCache\4t0JW4mY1qRPhiYz1fY3dw==.ico
IconIndex=0

Enregistrez le script Automator quelque part comme votre répertoire ~ / Library. J'ai appelé le mien OpenUrl.app.

Maintenant, allez dans un fichier URL quelque part et ouvrez le popup "Get Info". Modifiez la commande Ouvrir avec en votre script OpenUrl.app. Testez avec un seul ou cliquez sur "Tout changer ..." La première fois que j'ai cliqué, cela a donné une erreur, mais semblait fonctionner la deuxième fois.

En développant cela, j'ai eu les erreurs "Run Shell Script", mais c'était à cause d'erreurs réelles dans le script. Je pense que le principal problème avec le script de Daniel est qu'il ne gère pas les espaces dans le nom de fichier que vous essayez d'ouvrir.

Keith Olson
la source
-1

Utilisez reattach-to-user-namespace, soit du repo ou avec brew install reattach-to-user-namespace. Cela fonctionne dans Sierra, je ne suis pas sûr des autres OS.

Une fois installé, utilisez-le dans le script bash comme ceci:

rattacher à l'espace de noms utilisateur open a_cool_file.png

poulet méchant
la source
Cela ne semble pas répondre à la question. L'OP souhaite utiliser la fonction "Ouvrir avec" du Finder pour ouvrir un fichier avec un script Bash. La prise en charge du presse-papiers sous Tmux et Screen n'aide pas à cela, d'autant plus qu'il n'y a aucune indication que Tmux ou Screen soient même impliqués.
8bittree