Ist es möglich, die Datenbank der Startdienste nach Anwendungen abzufragen, die einen beliebigen Datei- oder UTI-Typ öffnen?

Ist es möglich, die Datenbank der Startdienste nach Anwendungen abzufragen, die einen beliebigen Datei- oder UTI-Typ öffnen?

Ich kann MDLS verwenden, um dieEinheitlicher Typbezeichner(UTI) für eine beliebige Datei sowie die Hierarchie der Typen, 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 ohne Ausprobieren zeigen können, welche Apps für eine bestimmte Harnwegsinfektion registriert wurden?

Aus der Überprüfung geht klar hervor, dass die foo.commandDatei von Terminal.app geöffnet wird, aber es ist überhaupt nicht klar, dass foo.ksh derzeit zu TextEdit.app gehört.

Ich möchte die Mac OS X-Version lesen können.Dienste startenDatenbank direkt, ohne tatsächlich darauf zurückgreifen zu müssen, openwelche App für jede Harnwegsinfektion ausgewählt wird. Es wäre, als ob man --preview --verboseSchalter öffnen müsste, um mir zu sagen, was sie tun würden, anstatt es zu tun.

Noch besser wäre eine Möglichkeit, alle Apps aufzulisten, die diesen Harnwegsinfekt auslösen könnten, auch wenn es sich nicht um die bevorzugte App handelt.

Um diese sekundären Informationen zu erhalten, muss ich für jeden Interessentyp eine Datei erstellen oder finden und im Finder manuell anzeigen, welche Apps diese UTI öffnen könnten.

Bildbeschreibung hier eingeben

Ich möchte wirklich programmgesteuert vom Terminal aus auf diese Daten zugreifen können.

Antwort1

Andrew MortensensPflichtist eine CLI, die UTI-Handler auflistet:

  • -d <uti>listet den Standardhandler auf;
  • -l <uti>listet alle registrierten Handler auf.

Sehen Sie sich dieManpage für Duti.

EDIT: wie Lri indiese Antwort, duti scheint nicht alle möglichen Anwendungen aufzulisten (möglicherweise, weil es die UTI-Vererbung nicht berücksichtigt? Das wäre eine Frage für weitere Untersuchungen). Seine Lösung,AlleAnwendungen(archive.org) würde eine umfassendere Antwort geben.

Antwort2

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 allem suchen, was Sie möchten.

/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -dump | grep -n7 'your search string'

verwandte Informationen