Dateizuordnung im Terminal ändern?


18

Gibt es eine Methode zum Zuordnen von Dateitypen zu Anwendungen über das Terminal? Ich dachte, ~ / Library / Preferences / com.apple.launchservices.plist könnte dies tun, und ich habe auch gesehen: Warum ist eine Befehlszeilenänderung in ~ / Library / Preferences / com.apple.LaunchServices.plist nicht sofort wirksam? aber ich kann es scheinbar nicht zum Laufen bringen.

Ich schätze, ich suche nach einer Möglichkeit, um zu imitieren, was die Benutzeroberfläche tut, wenn jemand sie zum Ändern von Zuordnungstypen verwendet. Dort scheint sie augenblicklich zu funktionieren.

Antworten:


8

Sie können ~/Library/Preferences/com.apple.LaunchServices.plistin einem Texteditor nach der Konvertierung in XML Folgendes bearbeiten :

plutil -convert xml1 ~/Library/Preferences/com.apple.LaunchServices.plist

Fügen Sie dem LSHandlersArray dann solche Einträge hinzu :

<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>

Mit können mdlsSie die UTIs von Dateitypen und osascript -e 'id of app "AppName"'die Bundle- IDs von Anwendungen anzeigen .

Sie können Änderungen anwenden, com.apple.LaunchServices.plistindem Sie neu starten. Abmelden und wieder einloggen ist nicht genug.


HINWEIS : dutibefindet sich nicht mehr in der aktiven Entwicklung und wurde von den Betreuern als "nicht unterstützt" gekennzeichnet. Abgesehen von Konfigurationsaktualisierungen hat das Projekt seit 2012 keine größeren Fortschritte erzielt. Es ist von Sourceforge nach Github umgezogen. Diese Antwort wurde aktualisiert und enthält die neuen Links.

Ich benutze aber auch Duti . Ich habe eine Datei wie diese (mit ca. 100 Zeilen) gespeichert als ~/.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

Ich habe einen launchd-Agenten, der duti ~/.dutiautomatisch ausgeführt wird, wenn er ~/.dutigeändert wird.

Normalerweise können Sie Dateinamenerweiterungen (wie .jpg) anstelle von UTIs (wie public.jpg) verwenden, um Dateitypen anzugeben. dutikonvertiert die Erweiterungen in UTIs, die auch für andere Erweiterungen gelten (z. B. .jpeg). Bei einigen Erweiterungen wie .mkvund .texhängt die UTI davon ab, welche Anwendung die Erweiterung zuerst registriert hat.

Die neueste Version von enthält dutinur Quellcode, aber 1.5.0 enthält auch ein Installationsprogramm.


5

Check out duti :

duti ist ein Befehlszeilentool von Andrew Mortensen, mit dem Standardanwendungen für Dokumenttypen und URL-Schemata unter Mac OS X festgelegt werden können.

Dokumenttypen unter Mac OS X werden von Apple als Uniform Type Identifiers (UTIs) bezeichnet. HTML-Dateien haben beispielsweise die UTI public.html. Microsoft Word-Dokumente werden in der UTI com.microsoft.word.doc beschrieben. Apple bietet viele UTIs unter Mac OS X an, aber Entwickler können ihre eigenen definieren, solange die UTI für diesen Dokumenttyp eindeutig ist.

Dutis Name bedeutet "Standard für UTI".


2
Obligatorischer Vorschlag: brew install dutiZum Installieren verwendenduti
Pier Paolo Ramon

1

Hier ist ein launchd-Agent für duti, der den Trick macht:

<?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>

Offensichtlich durch joshgummersallIhren eigenen Benutzernamen ersetzen . Ich habe diese Datei bei ~/Library/LaunchAgents/duti.plist, chmmodd bis 644 abgelegt und lief:

$ launchctl load -F -w ~/Library/LaunchAgents/duti.plist

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.