1 votos

MacOS por defecto escribe -data

Estoy tratando de crear un plist usando "defaults write", desafortunadamente no puedo usar plutil o cualquier otra utilidad.

Datos HEX: 62706c69 73743030 d4010203

Este es el plist que necesito crear

<?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>

Estoy usando esta sintaxis:

defaults write ~/Desktop/org.my.test '{"Architectures for arm64" = {org.my.test = (-data <62706c69 73743030 d4010203>, "x86_64");};}'

y me sale el error: 2021-06-26 09:21:09.280 defaults[27260:1348922] No se pudo analizar: {"Arquitecturas para arm64" = {org.my.test = (-data <62706c69 73743030 d4010203>, "x86_64");};}. Prueba a ponerle una sola comilla.

No consigo averiguar dónde debo poner las comillas simples

¿alguien puede ayudarme?

Gracias de antemano

0 votos

¿No se puede crear directamente la estructura XML (al fin y al cabo, todo es texto)?

0 votos

No porque necesito añadir información al plist ya existente

2voto

siva Puntos 23

-data es un parámetro para defaults al escribir un solo valor de datos.

Estás escribiendo una lista de propiedades completa de una sola vez, así que no incluyas este argumento como parte de la cadena de la lista de propiedades. Eliminar -data de su mando y funciona bien escribiendo toda la cadena como contenido del archivo de la lista de propiedades.

Cuando se escribe una lista completa de propiedades, los datos se codifican como hexadecimales entre paréntesis angulares, tal y como se ha hecho.

0voto

zimbatm Puntos 2525

También puede utilizar defaults import .

Eso te permite especificar los datos como el propio texto xml que estás mostrando en tu pregunta. El comando inverso, para ver los resultados, es defaults export - .

-1voto

benwiggy Puntos 8

Si miras en la página de manual de defaults, tiene opciones para crear diccionarios y arrays, y para añadir elementos a los arrays existentes y pares de claves a los diccionarios existentes.

  -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.

Un enfoque estructural puede funcionar mejor que intentar meterlo todo con la puntuación.

1 votos

Entiendo tu punto de usar opciones específicas por defecto para escribir cada valor, pero hasta ahora esta respuesta no explica cómo usar estas opciones para escribir datos, como se da en la pregunta. OP puede escribir con éxito matrices y diccionarios ya utilizando su método. Desglosando el plist de la pregunta, OP necesita escribir un array, por lo que de su respuesta puedo sacar que -array / -array-add son las opciones correctas, pero ¿cómo se pueden añadir algunos datos? El fragmento de la página de manual sólo dice element1 . Tal vez esta respuesta podría explicar lo que element1 para añadir datos a una matriz con esas opciones?

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X