임의의 파일 또는 UTI 유형을 여는 응용 프로그램에 대해 시작 서비스 데이터베이스를 쿼리 할 수 ​​있습니까?


11

mdl을 사용 하여 임의의 파일에 대한 UTI ( Uniform Type Identifier )와 특정 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에 속하는지는 확실하지 않습니다.

UTI 단위로 어떤 앱이 선택되었는지 확인하는 데 실제로 의존하지 않고 Mac OS X Launch Services 데이터베이스를 직접 읽을 수 있기를 원합니다 open. 그것은 가진 것과 같다 --preview --verbose스위치는 그 일이 아니라 할 것입니다 무엇을 말해 열려 얻을.

선호하는 앱이 아니더라도 UTI를 열 수있는 모든 앱을 나열하는 방법이 더 좋습니다.

이 보조 정보를 얻으려면 각 관심 유형에 대한 파일을 만들거나 찾은 다음 Finder를 사용하여 해당 UTI를 열 수있는 앱을 수동으로 표시해야합니다.

여기에 이미지 설명을 입력하십시오

터미널에서 프로그래밍 방식 으로이 데이터에 액세스 할 수 있기를 정말로 원합니다.


zsh 완성은 흥미로워 보이지만 stdout으로 얻는 방법을 모르겠습니다. AppApplications 소스 코드를 살펴보고 바이너리가 Lion에서 작동하는지 또는 컴파일 할 수 있는지 확인하겠습니다. 훌륭한 리드 쌍입니다-감사합니다!
bmike

답변:


6

Andrew Mortensen의 듀티 는 UTI 핸들러를 나열하는 CLI입니다.

  • -d <uti> 기본 핸들러를 나열합니다.
  • -l <uti> 등록 된 모든 핸들러를 나열합니다.

duti에 대한 매뉴얼 페이지를 참조하십시오 .

편집 : Lri 가이 답변 에서 지적했듯이 duti 는 가능한 모든 응용 프로그램을 나열하지는 않습니다 (UTI 상속을 고려하지 않았기 때문에? 추가 조사의 문제 일 수 있습니다). 그의 추천 솔루션 인 AllApllications 가 분명히 더 나은 해답이 될 것입니다.


Open with 메뉴에 표시되는 일부 앱이 없습니다.
Lri

매우 이상합니다. 어느 것이 빠졌는지 말해 줄 수 있습니까?
kopischke

duti의 예제 출력을 포함 하도록 다른 질문에서 내 대답을 편집했습니다 .
Lri

duti는 훌륭하게 작성되었지만 더 이상 사용되지 않는 API를 사용합니다. developer.apple.com/library/prerelease/mac/documentation/Carbon/…을
Mugen

OK-homebrew로 이것을 설치하면 홈런이됩니다. 정말 고마워!
bmike

11

이 명령을 사용하여 실행 서비스 데이터베이스를 검사 할 수 있습니다. -dump 옵션은 전체 데이터베이스를 제공 한 다음이를 grep에 파이프하고 원하는 것을 검색 할 수 있습니다.

/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -dump | grep -n7 'your search string'


응용 프로그램 번들이나 특정 kMDItemContentType을 구문 분석하는 특정 mdimporter 파일의 위치를 ​​뱉어 내기 위해이 덤프를 처리하는 방법에 대한 후속 질문을해야 할 것입니다. 그러나 이것은 크게 도움이되었습니다. 감사합니다
bmike
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.