
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를 읽을 수 있기를 원합니다.서비스 시작open
UTI별로 어떤 앱이 선택되었는지 확인하기 위해 실제로 사용하지 않고 직접 데이터베이스를 사용합니다 . --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'