我能够使用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。
我真的很希望能够从终端以编程方式访问此数据。