Almeno già con Mac High Sierra (10.13.4), defaults write
(es., se la forma defaults write com.example.test '{a = (b, 2);}'
o defaults write com.example.testb "a" '(b, 2)'
) sta creando file plist binari per me in ~/Library/Preferences/
anche quando il file non è ancora stato creato.
E può essere creato in un particolare percorso scambiando un dominio con il percorso del file desiderato, ad esempio,
defaults write "/users/brett/Desktop/com.example.testc" "a" '(b, 2)'
Anche la sintassi XML funziona:
defaults write "/users/brett/Desktop/com.example.testc" '<dict><key>a</key><array><string>b</string><string>2</string></array></dict>'
(Supponendo che JSON non funzioni (nonostante plist
sia in grado di convertirlo in JSON).
Si può anche usare defaults import
per creare un nuovo file plist binario, se defaults import <domain> -
che consente (tramite stdin) di usare una delle sintassi sopra (o defaults import <domain> pathToExistingPlist
, assumendo che il plist di riferimento sia esso stesso un file binario ).
Infine, si può usare defaults export
su un file esistente, assumendo che sia espresso come XML o l'elenco di proprietà ASCII (o un altro plist binario).
defaults export com.example.test1 /path/for/com.example.testcopy.plist
Quest'ultimo è simile al comportamento del comando plutil nella risposta di @ user495470 tranne per il fatto che verrà copiato solo se si specifica un percorso nel secondo argomento che porta allo stesso file di quello a cui si fa riferimento nel primo ( dominio).
Ad eccezione della seconda sintassi export
(che crea un <dict>
vuoto dopo aver trovato un tipo non-dict in root), per uno dei precedenti, gli errori vengono dati quando si prova qualcosa tranne un dict alla radice.