Je peux utiliser mdls pour afficher l' identificateur de type uniforme (UTI) pour un fichier arbitraire ainsi que la hiérarchie des types qui sont des sur-ensembles d'un UTI spécifique.
mac:~ mike$ mdls -name kMDItemContentType -name kMDItemContentTypeTree foo.ksh
kMDItemContentType = "public.ksh-script"
kMDItemContentTypeTree = (
"public.ksh-script",
"public.shell-script",
"public.script",
"public.source-code",
"public.plain-text",
"public.text",
"public.data",
"public.item",
"public.content"
)
mac:~ mike$ mdls -name kMDItemContentType -name kMDItemContentTypeTree foo.command
kMDItemContentType = "com.apple.terminal.shell-script"
kMDItemContentTypeTree = (
"com.apple.terminal.shell-script",
"public.shell-script",
"public.script",
"public.source-code",
"public.plain-text",
"public.text",
"public.data",
"public.item",
"public.content"
)
Y a-t-il des outils qui peuvent montrer quelles applications se sont inscrites pour une UTI particulière autre que l'essai et l'erreur?
Il ressort de l'inspection que le foo.command
fichier sera ouvert par Terminal.app, mais il n'est pas du tout clair que foo.ksh appartient actuellement à TextEdit.app.
J'aimerais pouvoir lire directement la base de données des services de lancement de Mac OS X sans avoir recours à l'utilisation open
pour voir quelle application est choisie par UTI. Ce serait comme si des --preview --verbose
commutateurs s'ouvraient pour me dire ce que cela ferait plutôt que de le faire.
Encore mieux serait un moyen de répertorier toutes les applications qui pourraient ouvrir cette UTI, même si elles ne sont pas l'application préférée.
Pour obtenir ces informations secondaires, je dois créer ou trouver un fichier pour chaque type d'intérêt et utiliser le Finder pour afficher manuellement les applications pouvant ouvrir cette interface utilisateur.
J'aimerais vraiment pouvoir accéder à ces données par programmation depuis le terminal.
Réponses:
Le duti d' Andrew Mortensen est une CLI qui listera les gestionnaires UTI:
-d <uti>
répertorie le gestionnaire par défaut;-l <uti>
répertorie tous les gestionnaires enregistrés.Voir la page de manuel pour duti .
EDIT: comme le souligne Lri dans cette réponse , duti ne semble pas lister toutes les applications possibles (peut-être parce qu'il ne tient pas compte de l'héritage UTI? Ce serait une question à approfondir). Sa solution recommandée, AllApllications serait évidemment une meilleure réponse.
la source
Vous pouvez utiliser cette commande pour examiner la base de données des services de lancement. L'option -dump vous donne l'intégralité de la base de données, vous pouvez ensuite la diriger vers grep et rechercher ce que vous voulez.
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -dump | grep -n7 'your search string'
la source