임의의 파일이나 UTI 유형을 여는 애플리케이션에 대해 시작 서비스 데이터베이스를 쿼리할 수 있습니까?

임의의 파일이나 UTI 유형을 여는 애플리케이션에 대해 시작 서비스 데이터베이스를 쿼리할 수 있습니까?

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에 어떤 앱이 등록되었는지 보여줄 수 있는 도구가 있습니까?

검사를 통해 파일이 Terminal.app에 의해 열릴 것이라는 점은 분명 foo.command하지만 foo.ksh가 현재 TextEdit.app에 속해 있는지는 전혀 명확하지 않습니다.

나는 Mac OS X를 읽을 수 있기를 원합니다.서비스 시작openUTI별로 어떤 앱이 선택되었는지 확인하기 위해 실제로 사용하지 않고 직접 데이터베이스를 사용합니다 . --preview --verbose스위치를 열어서 무엇을 할지 알려주는 것과 같습니다 .

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

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

여기에 이미지 설명을 입력하세요

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

답변1

앤드류 모텐슨의의무UTI 핸들러를 나열하는 CLI입니다.

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

참조duti 매뉴얼 페이지.

편집 : Lri가 지적했듯이이 답변, duti는 가능한 모든 응용 프로그램을 나열하지 않는 것 같습니다(아마도 UTI 상속을 고려하지 않기 때문일까요? 추가 조사가 필요합니다). 그의 솔루션은,모든애플리케이션(archive.org)가 더 완전한 답변을 제공할 것입니다.

답변2

이 명령을 사용하여 시작 서비스 데이터베이스를 검사할 수 있습니다. -dump 옵션은 전체 데이터베이스를 제공하며, 이를 grep으로 파이프하여 원하는 것을 검색할 수 있습니다.

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

관련 정보