Saya dapat menggunakan mdl untuk menunjukkan Uniform Type Identifier (UTI) untuk file yang sewenang-wenang serta hierarki jenis yang merupakan superset dari UTI tertentu.
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"
)
Apakah ada alat yang dapat menunjukkan Aplikasi mana yang telah terdaftar untuk ISK tertentu selain coba-coba?
Jelas dari pemeriksaan bahwa foo.command
file tersebut akan dibuka oleh Terminal.app, tetapi sama sekali tidak jelas bahwa foo.ksh saat ini milik TextEdit.app.
Saya ingin dapat membaca basis data Layanan Peluncuran Mac OS X secara langsung tanpa harus menggunakan open
untuk melihat aplikasi mana yang dipilih berdasarkan UTI. Ini seperti memiliki --preview --verbose
saklar untuk terbuka untuk memberi tahu saya apa yang akan dilakukan daripada melakukannya.
Bahkan yang lebih baik adalah cara untuk membuat daftar semua aplikasi yang dapat membuka ISK itu, bahkan jika mereka bukan aplikasi yang disukai.
Untuk mendapatkan informasi sekunder ini, saya harus membuat atau menemukan file untuk setiap jenis minat dan menggunakan Finder untuk secara manual menunjukkan aplikasi mana yang dapat membuka UTI itu.
Saya benar-benar ingin dapat mengakses data ini secara programatik dari terminal.
Jawaban:
Duti Andrew Mortensen adalah CLI yang akan mencantumkan penangan ISK:
-d <uti>
daftar penangan default;-l <uti>
daftar semua penangan terdaftar.Lihat halaman manual untuk duti .
EDIT: seperti yang ditunjukkan Lri dalam jawaban ini , duti tampaknya tidak mencantumkan semua aplikasi yang mungkin (mungkin karena tidak memperhitungkan warisan UTI? Itu akan menjadi masalah untuk penyelidikan lebih lanjut). Solusi yang direkomendasikannya, AllApllications jelas akan menjadi jawaban yang lebih baik.
sumber
Anda dapat menggunakan perintah ini untuk memeriksa basis data layanan peluncuran. Opsi -dump memberi Anda seluruh basis data, maka Anda dapat menyalurkannya ke grep dan mencari apa pun yang Anda suka.
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -dump | grep -n7 'your search string'
sumber