
Ich versuche, ein Array in einer plist zu finden und zu ersetzen. Ich kann mit Standardeinstellungen problemlos ein Array schreiben, aber ich kann kein Array löschen.
Die plist ist:~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plisty
Ich möchte löschen:
<dict>
<key>LSHandlerPreferredVersions</key>
<dict>
<key>LSHandlerRoleAll</key>
<string>-</string>
</dict>
<key>LSHandlerRoleAll</key>
<string>com.apple.mail</string>
<key>LSHandlerURLScheme</key>
<string>mailto</string>
</dict>
und ersetzen Sie es durch:
<dict>
<key>LSHandlerPreferredVersions</key>
<dict>
<key>LSHandlerRoleAll</key>
<string>-</string>
</dict>
<key>LSHandlerRoleAll</key>
<string>com.microsoft.outlook</string>
<key>LSHandlerURLScheme</key>
<string>mailto</string>
</dict>
Ich habe im Internet gesucht, aber keine Lösung gefunden ;-) Kann mir jemand helfen? Ich danke euch im Voraus für eure Hilfe, Netzmeister
Antwort1
Seit derplistscheint eine normale Textdatei zu sein, unter Linux reicht es, sie zu schreiben (es ist eine einzelne Zeile)
sed 's/<string>com.apple.mail<\/string>/<string>com.microsoft.outlook<\/string>/g' AAA.txt
wobei Sie stattdessen AAA.txt
Ihr schreiben sollten filename
.
Das Ergebnis wird in der Standardausgabe angezeigt ( tty
in der Sie arbeiten).
Nachdem Sie überprüft haben, ob es richtig funktioniert hat, können Sie die gleiche Zeile schreiben und den Parameter hinzufügen, -i
um die Datei darin zu ändern
sed -i 's/<string>com.apple.mail<\/string>/<string>com.microsoft.outlook<\/string>/g' AAA.txt
Einige Erklärungen mehr:
sed -i 's/OLD/NEW/g' NameOfYourFile
Der obige Befehl sucht innerhalb der Datei
NameOfYourFile
nach allen Vorkommen der ZeichenfolgeOLD
und ersetzt sie durch die ZeichenfolgeNEW
.Sie sollten genau identifizieren dieStichwortdie Sie ersetzen möchten, in diesem Fall mit den folgenden Tags:
<string>com.apple.mail</string>
.
Da ein vorhanden ist,/
müssen Sie es mit einem\
davor schützen und das Schlüsselwort wird zu<string>com.apple.mail<\/string>
. (Sie müssen die gleiche Logik auf die zweite Zeichenfolge anwenden).- Der Parameter
-i
ersetzt den String in der Datei, ohne das Ergebnis auf dem Bildschirm anzuzeigen. Dafür kann es besser sein, es vorher ohne zu versuchen. - Darunter
BSD
kann wichtig sein, dieReihenfolge der Parameter, essed ... -i
könnte also nicht dasselbe seinsed -i ...
und Ihnen den gefundenen Fehler anzeigen. sudo
Möglicherweise müssen Sie am Anfang hinzufügen, um dieRoot-Berechtigungoder diesen Befehl von einemWurzelschale, wenn Sie als normaler Benutzer nicht berechtigt sind, diese Datei zu ändern. (Sie können dies mit überprüfenls -l NameOfYourFile
).
Anmerkungen
ausman sed
-ich[SUFFIX],--an Ort und Stelle[=SUFFIX]
edit files in place (makes backup if SUFFIX supplied)