Rasgele bir dosya veya UTI türü açacak uygulamalar için başlatma hizmetleri veritabanını sorgulamak mümkün müdür?


11

Rasgele bir dosya için Tekdüzen Tür Tanımlayıcı (UTI) yanı sıra belirli bir UTI üst kümeleri olan türlerin hiyerarşisini göstermek için mdls kullanabilirsiniz .

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"
)

Hangi Uygulamaların deneme yanılma dışında belirli bir UTI için kaydedildiğini gösterebilecek araçlar var mı?

İncelemeden foo.commanddosyanın Terminal.app tarafından açılacağı açıktır, ancak foo.ksh'nin şu anda TextEdit.app'a ait olduğu açık değildir.

Mac OS X Launch Services veritabanını, aslında openhangi uygulamanın UTI temelinde seçildiğini görmek için başvurmadan doğrudan okuyabilmek istiyorum . --preview --verboseBana yapmaktan ziyade ne yapacağını söylemek için anahtarları açmak gibi bir şey olurdu.

Daha da iyisi, tercih edilen uygulama olmasa bile, bu UTI'yi açabilecek tüm uygulamaları listelemenin bir yolu olacaktır.

Bu ikincil bilgiyi almak için, her bir ilgi türü için bir dosya oluşturmam veya bulmam ve Finder'ı kullanarak bu UTI'yi hangi uygulamaların açabileceğini manuel olarak göstermem gerekiyor.

resim açıklamasını buraya girin

Gerçekten bu verilere terminalden programlı olarak erişebilmek istiyorum.


Zsh tamamlanması ilginç görünüyor, ama bunu stdout olarak nasıl alacağımı göremiyorum. AppApplications kaynak koduna bakacağım ve ikili dosyada Lion'un çalışıp çalışmadığını ya da derlenebileceğini göreceğim. Harika bir ipucu çifti - teşekkürler!
bmike

Yanıtlar:


6

Andrew Mortensen'ın duti'si UTI işleyicilerini listeleyecek bir CLI'dır :

  • -d <uti> varsayılan işleyiciyi listeler;
  • -l <uti> tüm kayıtlı işleyicileri listeler.

Duti için man sayfasına bakınız .

DÜZENLEME: Lri'nin bu cevapta belirttiği gibi, duti olası tüm uygulamaları listelemiyor gibi görünüyor (muhtemelen İYE kalıtımını hesaba katmadığı için mi? Bu daha fazla araştırma için bir sorun olacaktır). Önerilen çözümü AllApllications açıkçası daha iyi bir cevap olacaktır.


Ancak açık menüde görüntülenecek bazı uygulamalar eksik.
Lri

Çok tuhaf. Hangisinin eksik olduğunu söyleyebilir misiniz?
kopischke

Ben düzenlenmiş diğer soruya benim cevap Duti örnek çıkışını içerecek şekilde.
Lri

Duti güzel yazılmış olsa da, artık kullanımdan kaldırılmış API'ları kullanıyor. Developer.apple.com/library/prerelease/mac/documentation/Carbon/…
Mugen

Tamam - bunu homebrew tarafından kurmak ev koşusunu çalar. Çok teşekkürler!
bmike

11

Başlatma hizmetleri veritabanını incelemek için bu komutu kullanabilirsiniz. -Dump seçeneği size tüm veritabanını verir, sonra bunu grep'e aktarabilir ve istediğinizi arayabilirsiniz.

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


Muhtemelen uygulama paketini veya belirli bir kMDItemContentType'ı ayrıştıran belirli mdimporter dosyasının konumunu tükürmek için bu dökümün nasıl işleneceği sorusunu takip etmeliyim - ama bu çok yardımcı oldu. Thank you
bmike
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.