我能够使用 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"
)
Run Code Online (Sandbox Code Playgroud)
除了反复试验之外,是否有任何工具可以显示哪些应用程序已为特定 UTI 注册?
从检查可以清楚地看出,该foo.command文件将由 Terminal.app 打开,但目前尚不清楚 foo.ksh 是否属于 TextEdit.app。
我希望能够直接读取 Mac OS X Launch Services数据库,而无需实际使用open查看每个 UTI 选择的应用程序。这就像--preview --verbose打开开关告诉我要做什么而不是做什么。
更好的是列出所有可以打开该 UTI 的应用程序,即使它们不是首选应用程序。
为了获得这些次要信息,我必须为每种兴趣类型创建或找到一个文件,并使用 Finder 手动显示哪些应用程序可以打开该 UTI。
我真的希望能够从终端以编程方式访问这些数据。
小智 12
您可以使用此命令检查启动服务数据库。-dump 选项为您提供整个数据库,然后您可以将其输入 grep 并搜索您喜欢的任何内容。
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -dump | grep -n7 'your search string'
| 归档时间: |
|
| 查看次数: |
5534 次 |
| 最近记录: |