스크립트 / 명령 줄을 통해 기본 응용 프로그램 (파일 확장자 용)을 변경 하시겠습니까?


11

애플 스크립트, 명령 줄 명령 (같은 통해 파일 확장자에 대한 기본 응용 프로그램을 정의 할 수있는 방법이 있습니까 defaults write [...]).

정보 패널이나 RCDefaultApp 을 사용하여 수동으로 변경할 수 있지만 많은 컴퓨터와 사용자 계정을 설정해야하므로 프로세스를 자동화하는 방법을 찾고 싶습니다.

답변:


6

duti 는 텍스트 파일을 사용하여 파일 형식 및 URL 체계에 대한 기본 응용 프로그램을 구성 할 수있는 셸 유틸리티입니다.

예를 들어 다음과 같은 파일을 저장하십시오 ~/.duti.

com.gnu.Emacs public.plain-text all 
com.gnu.Emacs public.unix-executable all
org.videolan.vlc .mkv all

그런 다음를 실행하십시오 duti ~/.duti.

를 사용하여 또는를 brew install duti실행 하여 duti를 설치할 수 있습니다 wget https://github.com/fitterhappier/duti/archive/duti-1.5.2.tar.gz;tar -xf duti-1.5.2.tar.gz;cd duti-duti-1.5.2;./configure;make;sudo make install.


OS X 10.7.x 또는 10.8.x에서 컴파일 할 수는 없지만 유망한 것처럼 보입니다 checking which SDK to use... configure: error: darwin12.0.0 is not a supported system.
Mathias Bynens

pkg 설치 프로그램의 바이너리는 10.8에서 여전히 작동합니다.
Lri

내가 참조. 미래 참고로, 여기에 다운로드 링크는 다음과 같습니다 downloads.sourceforge.net/project/duti/duti/duti-1.5.0/...
마티아스 Bynens

10.8에서 작동합니까? .avi파일을 Quicktime Player (Finder → 정보 입수 → 다음으로 열기… → _ 모두 변경 사용 ) 로 열도록 기본 응용 프로그램을 설정 한 다음 duti -s org.videolan.vlc public.avi all대신 VLC를 사용하도록 실행 한 다음 LaunchServices다시 시작 했지만 효과가없는 것 같습니다. ( 시스템 선언 UTI 목록 참조 )
Mathias Bynens

1
그것은 적어도 나를 위해 작동합니다. Launch Services 데이터베이스를 다시 작성하거나 다시 시작하지 않아도됩니다. 을 살펴보면 ~/Library/Preferences/com.apple.LaunchServices.plistduti는 대부분의 파일 이름 확장자를 자동으로 UTI로 변환하므로 일반적으로 .avi대신 유형을 지정할 수 있습니다 public.avi. 일부 파일 이름 확장자의 UTI는 설치된 응용 프로그램에 따라 다릅니다.
Lri

12

Launch Services는 기본 파일 연결을 담당합니다.

Sublime Text 2에서 열도록 모든 텍스트 파일을 변경하고 싶다고 가정 해 봅시다.

먼저 Sublime Text 2에 kMDItemCFBundleIdentifier가 필요합니다. mdls를 사용 하여이 정보를 얻을 수 있습니다 .

> mdls /Applications/Sublime\ Text\ 2.app 
_kTimeMachineIsCreationMarker  = 1
_kTimeMachineNewestSnapshot    = 4001-01-01 00:00:00 +0000
_kTimeMachineOldestSnapshot    = 2012-02-22 03:49:19 +0000
kMDItemCFBundleIdentifier      = "com.sublimetext.2"
....snip....

mdls 로 텍스트 파일 중 하나를 검사하여 텍스트 파일의 내용 유형 값을 찾을 수 있습니다 .

> mdls test.txt 
kMDItemContentCreationDate     = 2012-03-25 04:18:50 +0000
kMDItemContentModificationDate = 2012-03-25 04:18:50 +0000
kMDItemContentType             = "public.plain-text"
kMDItemContentTypeTree         = (
    "public.plain-text",
    "public.text",
    "public.data",
    "public.item",
    "public.content"
)
kMDItemDateAdded               = 2012-03-25 04:18:50 +0000
kMDItemDisplayName             = "test.txt"
kMDItemFSContentChangeDate     = 2012-03-25 04:18:50 +0000
kMDItemFSCreationDate          = 2012-03-25 04:18:50 +0000
kMDItemFSCreatorCode           = ""
kMDItemFSFinderFlags           = 0
kMDItemFSHasCustomIcon         = 0
kMDItemFSInvisible             = 0
kMDItemFSIsExtensionHidden     = 0
kMDItemFSIsStationery          = 0
kMDItemFSLabel                 = 0
kMDItemFSName                  = "test.txt"
kMDItemFSNodeCount             = 975
kMDItemFSOwnerGroupID          = 20
kMDItemFSOwnerUserID           = 501
kMDItemFSSize                  = 975
kMDItemFSTypeCode              = ""
kMDItemKind                    = "Plain Text"
kMDItemLogicalSize             = 975
kMDItemPhysicalSize            = 4096

이 경우 모든 public.plain-text유형 의 기본 응용 프로그램을 변경합니다 .

이렇게하려면 다음을 입력하십시오.

defaults write com.apple.LaunchServices LSHandlers -array-add '{ LSHandlerContentType = \"public.plain-text\"; LSHandlerRoleAll = \"com.sublimetext.2\"; }'

변경 사항을 적용하려면 다음과 같이 Launch Services를 다시 시작해야합니다.

/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -kill -r -domain local -domain system -domain user

신용이 필요한 곳에서 신용을 얻으려면이 stackoverflow.com 질문 및 답변에서 /programming/9172226/how-to-set-default-application-for-specific-file 에서이 방법에 대해 배웠습니다. -mac-os-x 유형


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.