Al menos desde Mac High Sierra (10.13.4), defaults write
(por ejemplo, si es de la forma defaults write com.example.test '{a = (b, 2);}'
o defaults write com.example.testb "a" '(b, 2)'
) me está creando archivos binarios plist en ~/Library/Preferences/
incluso cuando el archivo aún no ha sido creado.
Y se puede crear en una ruta determinada intercambiando un dominio con la ruta de archivo deseada, por ejemplo
defaults write "/users/brett/Desktop/com.example.testc" "a" '(b, 2)'
La sintaxis XML también funciona:
defaults write "/users/brett/Desktop/com.example.testc" '<dict><key>a</key><array><string>b</string><string>2</string></array></dict>'
(El suministro de JSON no funciona (a pesar de plist
poder convertirlo en JSON).
También se puede utilizar defaults import
para crear un nuevo archivo binario plist, ya sea defaults import <domain> -
que le permite (a través de stdin) utilizar cualquiera de las sintaxis anteriores (o defaults import <domain> pathToExistingPlist
(suponiendo que el plist referenciado sea a su vez un archivo binario).
Por último, se puede utilizar defaults export
en un archivo existente, asumiendo que está expresado como XML o la lista de propiedades ASCII (u otro plist binario).
defaults export com.example.test1 /path/for/com.example.testcopy.plist
Esto último es similar al comportamiento del comando plutil en la respuesta de @user495470, excepto que sólo copiará en su lugar si se especifica una ruta en el segundo argumento que lleve al mismo archivo que el referenciado en el primero (dominio).
Con la excepción de este último export
(que crea un espacio vacío). <dict>
al encontrar un tipo no dict en root), para cualquiera de los anteriores, se dan errores al intentar cualquier cosa que no sea un dict en root.