Wie kann ich die Standard-App für alle Dateien eines bestimmten Dateityps über das Terminal in OS X ändern?
macos
file-association
Yashodhan
quelle
quelle
Antworten:
Ich habe einen einfacheren Weg. Du wirst Homebrew wollen, wenn du es noch nicht hast:
Installieren Sie duti:
Jetzt müssen Sie die ID der App finden, die Sie verwenden möchten, und sie der Erweiterung zuweisen, für die Sie sie verwenden möchten. In diesem Beispiel verwende ich bereits Brackets für
*.sh
und möchte es auch für*.md
Dateien anstelle von xcode verwenden.Rufen Sie die Standard-App-ID für
.sh
Dateien ab:Die letzte Zeile ist die ID.
Verwenden Sie diese App-ID für alle
.md
Dateien:quelle
osascript -e 'id of app "$appName"'
die ID jeder App ermitteln, die auf Ihrem System installiert istduti -s $(osascript -e 'id of app "Visual Studio Code"') .md all
Bearbeiten
~/Library/Preferences/com.apple.LaunchServices.plist
.Fügen Sie unter einen Eintrag hinzu
LSHandlers
, der die UTI (LSHandlerContentType
z. B. Schlüsselpublic.plain-text
) und die Anwendungspaket-ID (LSHandlerRoleAll
zcom.macromates.textmate
. B. ) enthält.Es sieht so aus in Eigenschaftenlisten-Editor aus :
Verwenden Sie dazu in der Befehlszeile
defaults
oder/usr/libexec/PlistBuddy
. Beide haben umfangreiche Hilfeseiten.Zum Beispiel, um alle
.plist
Dateien mit zu öffnenXcode
:Natürlich müssen Sie sicherstellen, dass noch kein Eintrag für die UTI
com.apple.property-list
vorhanden ist.Hier ist ein vollständigeres Skript, mit dem vorhandene Einträge für eine UTI entfernt und neue hinzugefügt werden. Es kann nur Bündel-IDs anstelle von Parametern verarbeiten
LSHandlerContentType
und wird immer festgelegtLSHandlerRoleAll
und verfügt über fest codierte Bündel-IDs. Ansonsten sollte es ganz gut funktionieren.quelle
x=~/Library/Preferences/com.apple.LaunchServices.plist; plutil -convert xml1 $x; open -a TextEdit $x
diese LSHandlers-Einträge zu kopieren und einzufügen. Um die Bundle-ID zu erhalten, können Sie Folgendes tunosascript -e 'bundle identifier of (info for (path to app "TextEdit"))'
.defaults
es nicht in der Lage zu sein scheint, und es erfordert ein paarPlistBuddy
Anrufe. Es ist jedoch möglich, dies in einem wiederverwendbaren Shell-Skript zu tun.