valores predeterminados: escritura de directorios y arrays anidados

0

Estoy tratando de escribir un script de arranque Bash que implementará las preferencias de algunas de las aplicaciones que uso, a través del comando defaults write .
Hay casos particulares en los que encuentro que la estructura es bastante complicada, y al intentar migrarla a mi script, desde la salida defaults read , se produce un error.

Para cada una de las estructuras a continuación, ¿cuál sería la forma correcta de hacer que defaults write -aduiten?

Aplicación del diccionario de Apple, esta sección específica es del tipo array . Estoy interesado en tomar la subsección dictionaries , como está, y ponerla en mi script.

defaults read com.apple.Dictionary "window settings"
(
        {
        dictionaries =         (
                        {
                "disclosure opened" = 1;
                path = "/System/Library/Frameworks/CoreServices.framework/Frameworks/DictionaryServices.framework/Resources/Wikipedia.wikipediadictionary";
                "sub-dictionaries" =                 (
                                        {
                        "disclosure opened" = 1;
                        identifier = "com.apple.dictionary.Wikipedia-en";
                        "user choice" = 1;
                    },
                                        {
                        "disclosure opened" = 1;
                        identifier = "com.apple.dictionary.Wikipedia-he";
                        "user choice" = 0;
                    }
                );
                "user choice" = 1;
            },
                        {
                "disclosure opened" = 1;
                path = "/System/Library/Assets/com_apple_MobileAsset_DictionaryServices_dictionaryOSX/cd4d7cc1cd227a13d2b9c029f86c940f94b7543a.asset/AssetData/Apple Dictionary.dictionary";
                "user choice" = 0;
            },
                        {
                "disclosure opened" = 1;
                path = "/System/Library/Assets/com_apple_MobileAsset_DictionaryServices_dictionaryOSX/61b49f47f0dce1c061c688d415e1f1a84c37fce0.asset/AssetData/Oxford Dictionary of English.dictionary";
                "user choice" = 0;
            },
                        {
                "disclosure opened" = 1;
                path = "/System/Library/Assets/com_apple_MobileAsset_DictionaryServices_dictionaryOSX/2fcc349eb53d7c336b8372758b70508eb8e2ac0b.asset/AssetData/Oxford Thesaurus of English.dictionary";
                "user choice" = 0;
            }
        );
        "image window frame" = "{{0, 0}, {0, 0}}";
        "image window parent frame" = "{{0, 0}, {0, 0}}";
        "index width" = 183;
        "search method" = 1;
        "window ID" = 1;
    }
)

Bartender 3. Del tipo dictionary , me gustaría tomar éste como está y ponerlo en mi script (este es solo un breve extracto, la sección continúa y sigue con esas matrices anidadas ".

defaults read com.surteesstudios.Bartender appSettings
{
    AirPortExtra =     {
        controlled = 3;
        searchName = "AirPort - Wi-Fi";
        showForUpdates = 0;
        updateDisplayTime = 15;
    };
    AppleTextInputExtra =     {
        controlled = 3;
        searchName = "Text Input";
        showForUpdates = 0;
        updateDisplayTime = 15;
    };
...

Y un ejemplo más, la lista de accesos directos Sip (una aplicación de selección de colores). Es un array con dictionaries anidado. Nuevamente, el código real es mucho más largo, con algunos otros subsegmentos ( name = General ), con aquellos que tienen muchos otros subsegmentos propios ( shortcuts = () ).

defaults read io.sipapp.Sip-paddle "USERDEFAULTS_SHORTCUTS_LIST"
(
        {
        name = General;
        shortcuts =         (
                        {
                code = 35;
                disabled = 1;
                flag = 1835008;
                global = 1;
                id = launchPicker;
                name = "Show Picker:";
                readonly = 0;
                selector = "launchPicker:";
                visible = 1;
            },
                        {
                code = 8;
                disabled = 1;
                flag = 1835008;
                global = 1;
                id = launchSharedColorPanel;
                name = "Show Color Panel:";
                readonly = 0;
                selector = "launchSharedColorPanel:";
                visible = 1;
            }, ...

He intentado usar solo -array y -array-add , -dict y -dict-add , todo sin éxito. También he intentado usar la utilidad PlistBuddy, tampoco resultados.

Muchas gracias!

    
pregunta voronoi 11.09.2018 - 19:34

0 respuestas

Lea otras preguntas en las etiquetas