Dans le Finder, vous pouvez cliquer avec le bouton droit sur un document pour obtenir le menu contextuel, qui comporte l'option 'Ouvrir avec...' avec un sous-menu de toutes les applications pouvant ouvrir ce document. Existe-t-il un moyen d'obtenir cette liste via le Terminal? Merci beaucoup.
Réponses
Trop de publicités?Ouvert consultera la même base de données que le finder pour associer un type de fichier à des applications potentielles. Le nom de cette base de données est la base de données Launch Services et elle est assez grande et difficile à gérer si vous la déversez entièrement.
lsregister -dump | wc -l
J'ai 533 000 lignes de texte dans ma base de données, donc vous devrez peut-être réduire ce que vous cherchez plutôt que de simplement consommer tout le flux de données sur tous les types de fichiers possibles et toutes les applications possibles. Si vous n'avez pas lsregister dans votre chemin, trouvez-le ici et créez éventuellement un lien symbolique vers /usr/local/bin
mdfind -name lsregister
ln -s $(mdfind -name lsregister) /usr/local/bin
Mais, si vous voulez avoir le tableau complet - vous pouvez déverser la base de données et plonger dans les détails techniques glorieux.
Allons deux étapes plus loin dans le chemin du lapin. Disons que vous avez un fichier vidéo sur votre bureau. Vous utiliseriez l'outil de liste des métadonnées pour déverser tous les attributs de ce fichier (61 entrées pour un film que j'ai) et ensuite vous devez analyser le type de contenu pour l'associer au déversement de base de données des services de lancement.
mdls ~/Bureau/video.mov | wc -l
Et pour choisir juste le type de contenu le plus spécifique (puisque un fichier a une arborescence de types de contenu potentiels - vous devrez peut-être également les considérer dans votre recherche - mais comme nous simplifions les choses - supposons que le type final est celui qui correspond à votre cas)
mdls ~/Bureau/video.mov | grep -w kMDItemContentType
Donc pour moi, ce film est catégorisé par l'indexation spotlight comme un fichier de type com.apple.quicktime-movie et dans le déversement des services de lancement - l'une des applications qui prétend ouvrir ce fichier est /Applications/QuickTime Player.app
Écrire un script pour cela va être tout un exercice, mais les données sont là pour que vous les examiniez et jouiez avec. Amusez-vous !
Cette autre question a plus de détails impressionnants et un outil appelé http://duti.org qui pourrait être l'outil que vous cherchez. Mieux encore, c'est open source donc vous pouvez voir comment ça marche.
Ma solution ici est similaire à une réponse que j'ai fournie à un problème partageant quelques similitudes avec cette question.
En utilisant JavaScript pour l'automation (JXA), vous pouvez récupérer une liste d'applications capables d'ouvrir un type de contenu spécifique, désigné par un identifiant de type uniforme.
ObjC.import('CoreServices');
const contentType = 'public.plain-text';
ObjC.deepUnwrap(
$.LSCopyAllRoleHandlersForContentType(
contentType,
$.kLSRolesAll)
);
Pour l'utiliser depuis le Terminal, vous pouvez l'exécuter avec osascript
:
osascript -l JavaScript <
`Pour plus de commodité, vous pouvez créer une fonction
bashet paramétrer la valeur de
contentType`:
whatOpens() {
osascript -l JavaScript <Application(x).name())
.join('\n');
OSA
}
Ensuite :
whatOpens public.plain-text
qui affiche sur mon système :
BBEdit
MindNode
Atom
TextEdit
Pages
CotEditor
Numbers
TextMate``