Jestem w stanie użyć mdls do wyświetlenia Uniform Type Identifier (UTI) dla dowolnego pliku, a także hierarchii typów, które są nadzbiórami konkretnego 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"
)
Czy są jakieś narzędzia, które mogą pokazać, które aplikacje zostały zarejestrowane dla konkretnego interfejsu użytkownika, oprócz prób i błędów?
Z inspekcji jasno wynika, że foo.command
plik zostanie otwarty przez Terminal.app, ale wcale nie jest jasne, że foo.ksh należy obecnie do TextEdit.app.
Chciałbym móc bezpośrednio czytać bazę danych usług uruchamiania systemu Mac OS X bez konieczności korzystania open
z funkcji sprawdzania, która aplikacja jest wybierana na podstawie UTI. To tak, jakbyśmy mieli --preview --verbose
otwarte przełączniki, żeby powiedzieć mi, co powinien zrobić, niż robić to.
Jeszcze lepszy byłby sposób na wyświetlenie listy wszystkich aplikacji, które mogłyby otworzyć ten interfejs użytkownika, nawet jeśli nie są one preferowaną aplikacją.
Aby uzyskać te dodatkowe informacje, muszę utworzyć lub znaleźć plik dla każdego rodzaju zainteresowania i użyć Findera, aby ręcznie pokazać, które aplikacje mogą otworzyć ten interfejs użytkownika.
Naprawdę chciałbym mieć możliwość programowego dostępu do tych danych z terminala.