Ich kann mdls verwenden, um die UTI ( Uniform Type Identifier ) für eine beliebige Datei sowie die Hierarchie der Typen anzuzeigen , die Obermengen einer bestimmten UTI sind.
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"
)
Gibt es Tools, die anzeigen können, welche Apps für eine bestimmte UTI registriert sind, außer Versuch und Irrtum?
Aus der Überprüfung geht hervor, dass die foo.command
Datei von Terminal.app geöffnet wird, aber es ist überhaupt nicht klar, dass foo.ksh derzeit zu TextEdit.app gehört.
Ich möchte in der Lage sein, die Mac OS X Launch Services- Datenbank direkt zu lesen, ohne tatsächlich zu verwenden, um open
zu sehen, welche App pro UTI-Basis ausgewählt wird. Es wäre, als hätte man --preview --verbose
Schalter, um sich zu öffnen und mir zu sagen, was ich tun würde, anstatt es zu tun.
Noch besser wäre eine Möglichkeit, alle Apps aufzulisten, die diese UTI öffnen könnten, auch wenn sie nicht die bevorzugte App sind.
Um diese sekundären Informationen zu erhalten, muss ich für jede Art von Interesse eine Datei erstellen oder finden und mit dem Finder manuell anzeigen, welche Apps diese UTI öffnen könnten.
Ich möchte wirklich in der Lage sein, programmgesteuert vom Terminal aus auf diese Daten zuzugreifen.
Antworten:
Andrew Mortensens duti ist eine CLI, die UTI-Handler auflistet :
-d <uti>
listet den Standardhandler auf;-l <uti>
listet alle registrierten Handler auf.Siehe die Manpage für Duti .
BEARBEITEN: Wie Lri in dieser Antwort hervorhebt, scheint duti nicht alle möglichen Anwendungen aufzulisten (möglicherweise, weil es die UTI-Vererbung nicht berücksichtigt? Das wäre eine Frage der weiteren Untersuchung). Seine empfohlene Lösung AllApllications wäre offensichtlich eine bessere Antwort.
quelle
Mit diesem Befehl können Sie die Datenbank der Startdienste untersuchen. Mit der Option -dump erhalten Sie die gesamte Datenbank. Anschließend können Sie diese in grep weiterleiten und nach Ihren Wünschen suchen.
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -dump | grep -n7 'your search string'
quelle