
我可以使用 mdls 來顯示統一類型識別符(UTI) 用於任意檔案以及作為特定 UTI 超集的類型層次結構。
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"
)
除了反覆試驗之外,是否有任何工具可以顯示哪些應用程式已註冊特定 UTI?
檢查可以清楚地看出該foo.command
檔案將由 Terminal.app 打開,但完全不清楚 foo.ksh 目前屬於 TextEdit.app。
我希望能夠閱讀 Mac OS X啟動服務直接存取資料庫,而無需實際使用來open
查看根據每個 UTI 選擇哪個應用程式。這就像打開--preview --verbose
開關來告訴我要做什麼,而不是去做。
更好的是列出所有可以打開該 UTI 的應用程序,即使它們不是首選應用程式。
為了獲取這些輔助訊息,我必須為每種類型的興趣建立或尋找一個文件,並使用 Finder 手動顯示哪些應用程式可以開啟該 UTI。
我真的希望能夠從終端以程式方式存取這些數據。
答案1
答案2
您可以使用此命令檢查啟動服務資料庫。 -dump 選項為您提供整個資料庫,然後您可以將其輸入 grep 並蒐索您喜歡的任何內容。
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -dump | grep -n7 'your search string'