Ich möchte eine plist mit "defaults write" erstellen, leider kann ich plutil oder ein anderes Dienstprogramm nicht verwenden.
HEX-Daten: 62706c69 73743030 d4010203
Dies ist die Liste, die ich erstellen muss
<?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>Architectures for arm64</key>
<dict>
<key>org.my.test</key>
<array>
<data>
YnBsaXN0MDDUAQID
</data>
<string>x86_64</string>
</array>
</dict>
</dict>
</plist>
Ich verwende diese Syntax:
defaults write ~/Desktop/org.my.test '{"Architectures for arm64" = {org.my.test = (-data <62706c69 73743030 d4010203>, "x86_64");};}'
und ich erhalte den Fehler: 2021-06-26 09:21:09.280 defaults[27260:1348922] Konnte nicht parsen: {"Architectures for arm64" = {org.my.test = (-data <62706c69 73743030 d4010203> , "x86_64");};}. Versuchen Sie es mit einfachen Anführungszeichen.
Ich kann nicht herausfinden, wo ich die einfachen Anführungszeichen setzen soll
kann mir bitte jemand helfen?
-data
ist ein Parameter defaults
beim Schreiben eines einzelnen Datenwerts.
Sie schreiben eine ganze Eigenschaftsliste auf einmal, schließen Sie dieses Argument also nicht als Teil der Eigenschaftslistenzeichenfolge ein. Entfernen Sie -data
aus Ihrem Befehl und es funktioniert gut, wenn Sie die gesamte Zeichenfolge als Inhalt der Eigenschaftslistendatei schreiben.
Beim Schreiben einer vollständigen Eigenschaftsliste werden die Daten als Hex in spitzen Klammern codiert, wie Sie es getan haben.
Du könntest auch verwenden defaults import
.
Auf diese Weise können Sie die Daten als genau den XML-Text angeben, den Sie in Ihrer Frage anzeigen. Der umgekehrte Befehl zum Anzeigen der Ergebnisse lautet defaults export -
.
Wenn Sie die Manpage nach Standardeinstellungen durchsehen, enthält sie Optionen zum Erstellen von Wörterbüchern und Arrays und zum Hinzufügen von Elementen zu vorhandenen Arrays und Schlüsselpaaren zu vorhandenen Wörterbüchern.
-array Allows the user to specify an array as the value for the given preference key:
defaults write somedomain preferenceKey -array element1 element2 element3
The specified array overwrites the value of the key if the key was present at the time of the write. If
the key was not present, it is created with the new value.
-array-add Allows the user to add new elements to the end of an array for a key which has an array as its value.
Usage is the same as -array above. If the key was not present, it is created with the specified array as
its value.
-dict Allows the user to add a dictionary to the defaults database for a domain. Keys and values are speci-
fied in order:
defaults write somedomain preferenceKey -dict key1 value1 key2 value2
The specified dictionary overwrites the value of the key if the key was present at the time of the
write. If the key was not present, it is created with the new value.
-dict-add Allows the user to add new key/value pairs to a dictionary for a key which has a dictionary as its
value. Usage is the same as -dict above. If the key was not present, it is created with the specified
dictionary as its value.
Ein struktureller Ansatz kann besser funktionieren, als zu versuchen, alles mit Satzzeichen zu stopfen.
-array
/ -array-add
die richtigen Optionen sind, aber wie kann man einige Daten hinzufügen? Das Manpage-Snippet sagt nur element1
. Vielleicht könnte diese Antwort erklären, was element1
zu verwenden ist, um Daten zu einem Array mit diesen Optionen hinzuzufügen?
kein Hang
Dimitrios