Al menos tan pronto como Mac High Sierra (10.13.4), defaults write
(por ejemplo, ya sea de la forma defaults write com.example.test '{a = (b, 2);}'
o defaults write com.example.testb "a" '(b, 2)'
) está creando archivos binarios plist para mí en ~/Library/Preferences/
incluso cuando el archivo aún no ha sido creado.
Y se puede crear en una ruta particular 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 que plist
puede convertirlo a JSON).)
También se puede usar defaults import
para crear un nuevo archivo plist binario, ya sea defaults import <domain> -
que le permite (a través de stdin) usar cualquiera de las sintaxis anteriores (o defaults import <domain> pathToExistingPlist
, asumiendo que el plist al que se hace referencia es en sí mismo un archivo binario ).
Finalmente, se puede usar defaults export
en un archivo existente, asumiendo que se expresa como XML o la lista de propiedades ASCII (u otra lista binaria).
defaults export com.example.test1 /path/for/com.example.testcopy.plist
Este último es similar al comportamiento del comando plutil en la respuesta de @ user495470, excepto que solo se copiará en su lugar si especifica una ruta en el segundo argumento que conduce al mismo archivo al que se hace referencia en el primero ( dominio).
Con la excepción de la última sintaxis export
(que crea un <dict>
vacío al encontrar un tipo no dictado en la raíz), para cualquiera de los anteriores, se dan errores al intentar cualquier cosa excepto un dict en la raíz.