La manière la plus simple et intégrée de le faire est de simplement faire glisser les éléments du Finder vers une fenêtre de terminal . Lorsque vous les déposez, Terminal «tape» leurs noms de chemin (d'échappement). Vous pouvez ensuite utiliser la modification de la ligne de commande de votre shell pour entrer le reste de la commande. Ou si vous pensez à l'avance, vous pouvez d'abord taper la commande puis faire glisser les éléments.
La version «drag first»:
- Sélectionnez et faites glisser certains éléments du Finder vers une fenêtre de terminal qui affiche une invite de shell. Le terminal insérera les chemins d'accès (échappés).
- Tapez Control+ A(allez au début de la ligne; ⌃A est la valeur par défaut, mais varie selon le shell / la configuration).
- Tapez votre commande et un espace (il sera inséré avant les chemins d'accès).
La version «anticiper»:
- Dans n'importe quel ordre, faites les deux:
- Dans une fenêtre de terminal , saisissez la partie initiale de votre commande et de votre espace (tout sauf les noms de chemin).
- Sélectionnez certains éléments dans le Finder .
- Faites glisser les éléments sélectionnés du Finder vers la fenêtre Terminal où vous avez tapé la commande.
- Activez la fenêtre Terminal et appuyez sur Return.
Vous pouvez (comme d'autres réponses l'ont indiqué) vous tourner vers AppleScript ou Automator si vous avez besoin d'une solution plus automatisée. Étant donné que les «pièces mobiles» supplémentaires peuvent ajouter une certaine complexité à la solution, vous devrez peser les avantages du processus ci-dessus (manuel, mais flexible) par rapport à la complexité de la mise en œuvre d'une ou plusieurs des solutions automatisées.
Certaines des possibilités d'automatisation comprennent:
- une application de droplet AppleScript
- un programme AppleScript simple lancé par le menu de script intégré ou un autre lanceur
- obtenir les chemins d'accès à partir de la sélection du Finder
- un workflow Automator, une application ou un plug-in Finder
- un
.command
fichier exécutable (généralement un script shell; ouvrez-le dans le Finder pour l'exécuter dans Terminal )
- obtenir les chemins d'accès à partir de la sélection du Finder (via osascript )
- un outil tiers qui fournit déjà les fonctionnalités dont vous avez besoin
Les services sont la façon dont osx gère ce genre de choses.
Sous le menu de l'application (dans ce cas «Finder»), il y a (presque) toujours une
Services
option de menu qui fournira des services qui s'appliquent à l'application actuelle et à son état actuel. Généralement, l'état est le type d'objet sélectionné (texte, fichiers / dossiers, etc.).Ils peuvent être activés, désactivés et assignés à des raccourcis clavier dans le panneau Préférences Système qui n'a de sens que pour le dernier de ces trois
Keyboard
,.Pour créer un service qui applique un script shell aux fichiers / dossiers du Finder:
Lancez l' automate et créez un nouveau
Service
type de document.files or folders
)Get Selected Finder Items
action.Run Shell Script
Ça devrait ressembler a quelque chose comme ca:
automator le placera automatiquement dans votre
~/Library/Services
dossier lorsque vous l'enregistrerez, ce qui le rendra disponible (presque) immédiatement via leApplication -> Services
menu ou le menu contextuel (clic droit).la source
Sous Mac OS X, le langage de script préféré est Applescript. Vous pouvez créer une droplet (un script qui fera quelque chose lorsque vous déposez des fichiers sur son icône), placer l'icône du script (qui peut être enregistré en tant qu'application) sur le bureau, et faire glisser et déposer les fichiers que vous souhaitez transmettre à la scénario.
Vous pouvez également utiliser des actions de dossier. Il est possible d'associer un script Applescript à un dossier qui sera exécuté à chaque fois que certains fichiers (ou répertoires) sont déposés sur le dossier.
la source
Je voulais aussi le faire, mais contrairement aux solutions ci-dessus, je voulais produire des paramètres cités pour un script shell. Ces autres méthodes sont très bien, mais elles sont un peu comme suggérer "juste commande-v dans le terminal" quand ce que vous voulez vraiment
pbpaste
.Je voulais créer une fonction shell que je peux utiliser dans mes scripts, qui s'est étendue aux paramètres de fichier pour chaque sélection du Finder. J'utilise la coquille de poisson et cela semble fonctionner quelque peu:
Utilisé (encore une fois dans la coquille de poisson) comme
convert-video (selection)
.Dans une fonction bash, il peut être nécessaire de citer la sortie avec quelque chose comme
| tr '\n' '\0' | xargs -0 printf "%q" {}
à la fin de cette commande osascript, pas sûr.(Remarque: tout ce que je sais sur les scripts avancés de script et de shell j'ai ré-appris au cours des 2 dernières heures et j'oublierai demain)
la source
Sur la base des réponses ci-dessus, j'ai construit ce truc
https://github.com/commonpike/DropShell
Fondamentalement, une application applescript qui appelle un fichier shell situé dans l'application avec les fichiers déposés comme arguments. Vous pouvez modifier le script shell selon vos besoins.
la source
Sur la base de la réponse de commonpike, j'ai créé un AppleScript, qui redirige tous les fichiers déposés dessus, vers un script shell avec le nom correspondant. Enregistrez simplement en tant qu'application dans ScriptEditor d'Apple et renommez-le en script.app pour correspondre à votre script.sh https://github.com/PHolker/scripts/blob/master/DropScript.scpt
la source