터미널을 통해 파일 형식을 응용 프로그램과 연결하는 방법이 있습니까? ~ / Library / Preferences / com.apple.launchservices.plist가 그렇게 할 수 있다고 생각했으며, 또한 명령 줄이 ~ / Library / Preferences / com.apple.LaunchServices.plist로 변경되는 이유는 무엇입니까? 하지만 제대로 작동하지 않는 것 같습니다.
누군가 GUI를 사용하여 연결 유형을 변경할 때 GUI 가하는 일을 모방 할 수있는 방법을 찾고 있는데 즉시 작동하는 것 같습니다 …
답변
~/Library/Preferences/com.apple.LaunchServices.plist
텍스트 편집기에서 XML로 변환 한 후 편집 할 수 있습니다 .
plutil -convert xml1 ~/Library/Preferences/com.apple.LaunchServices.plist
그런 다음 LSHandlers
배열에 다음 과 같은 항목을 추가하십시오 .
<dict>
<key>LSHandlerContentType</key>
<string>com.adobe.pdf</string>
<key>LSHandlerRoleAll</key>
<string>net.sourceforge.skim-app.skim</string>
</dict>
<dict>
<key>LSHandlerContentTag</key>
<string>mkv</string>
<key>LSHandlerContentTagClass</key>
<string>public.filename-extension</string>
<key>LSHandlerRoleAll</key>
<string>org.videolan.vlc</string>
</dict>
당신이 사용할 수있는 mdls
같은 파일 형식 뭔가의 요로 감염을 볼 osascript -e 'id of app "AppName"'
응용 프로그램의 번들 식별자를 볼 수 있습니다.
com.apple.LaunchServices.plist
다시 시작 하여 변경 사항을 적용 할 수 있습니다 . 로그 아웃했다가 다시 충분하지 않습니다.
참고 :
duti
더 이상 현재 개발 중이 아니며 관리자가 “지원되지 않음”으로 표시했습니다. 프로젝트는 구성 업데이트 외에 2012 년 이후 큰 진전을 보지 못했습니다. Sourceforge에서 Github로 이동했습니다. 이 답변은 새로운 링크를 포함하도록 업데이트되었습니다.
나는 또한 duti 를 사용 합니다. 다음과 같은 파일 (약 100 줄)을 ~/.duti
다음 과 같이 저장했습니다 .
org.gnu.Emacs public.plain-text all # .txt, .text, plain text files without an extension
org.gnu.Emacs public.unix-executable all # executable scripts
com.SequentialX.Sequential .jpg all
org.videolan.vlc .mkv all
변경 duti ~/.duti
되면 자동으로 실행되는 시작된 에이전트가 ~/.duti
있습니다.
일반적으로 파일 형식을 지정하기 위해 .jpg
UTI (같은 public.jpg
) 대신 파일 이름 확장자 (같은 )를 사용할 수 있습니다 . duti
확장을 다른 확장 (예 :)에도 적용되는 UTI로 변환합니다 .jpeg
. .mkv
and와 같은 일부 확장의 .tex
경우 UTI는 확장을 먼저 등록한 응용 프로그램에 따라 다릅니다.
답변
듀티 확인 :
duti는 Andrew Mortensen이 작성한 명령 줄 도구로 Mac OS X에서 문서 유형 및 URL 체계에 대한 기본 응용 프로그램을 설정하도록 설계되었습니다.
Mac OS X의 문서 유형은 Apple이 UTI (Uniform Type Identifier)라고 부르는 것에 의해 정의됩니다. 예를 들어 HTML 파일의 UTI는 public.html입니다. Microsoft Word 문서는 UTI com.microsoft.word.doc에서 설명합니다. Apple은 Mac OS X과 함께 많은 UTI를 제공하지만 UTI가 해당 문서 유형에 고유 한 한 개발자는 자유롭게 자신의 것을 정의 할 수 있습니다.
duti의 이름은 “UTI의 기본값”을 의미합니다.
답변
다음은 트릭을 수행하는 duti에 대해 시작된 에이전트입니다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.duti.watcher</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/duti</string>
<string>/Users/joshgummersall/.duti</string>
</array>
<key>UserName</key>
<string>joshgummersall</string>
<key>KeepAlive</key>
<false/>
<key>WatchPaths</key>
<array>
<string>/Users/joshgummersall/.duti</string>
</array>
</dict>
</plist>
joshgummersall
자신의 사용자 이름으로 바꾸 십시오. 나는에서이 파일을 배치 ~/Library/LaunchAgents/duti.plist
, chmmod
644 및 RAN에 D를 :
$ launchctl load -F -w ~/Library/LaunchAgents/duti.plist
답변
짧은 대답 : 파일의 응용 프로그램 연결은 파일의 리소스 포크에 저장되며 Apple은 리소스 포크를 조작 할 수있는 두 가지 유틸리티 ( Rez 및 DeRez )를 제공합니다.
자세한 내용은이 질문에 대한 수퍼 유저에게 매우 철저하게 답변됩니다.