애플 스크립트, 명령 줄 명령 (같은 통해 파일 확장자에 대한 기본 응용 프로그램을 정의 할 수있는 방법이 있습니까 defaults write [...]
).
정보 패널이나 RCDefaultApp 을 사용하여 수동으로 변경할 수 있지만 많은 컴퓨터와 사용자 계정을 설정해야하므로 프로세스를 자동화하는 방법을 찾고 싶습니다.
답변
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
.
답변
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 유형
답변
이 수퍼 유저 게시물 에는 유용한 정보가 포함되어 있습니다. LaunchServices에 대한 자세한 내용은 Apple 개발자 문서에 대한 링크 입니다. LSSetDefaultRoleHandlerForContentType 섹션 (48 페이지)으로 이동 하십시오.