impostazioni predefinite: scrittura di directory e array nidificati

0

Sto provando a scrivere uno script Bash bootstrap che implementerà le preferenze per alcune delle app che uso, tramite il comando defaults write .
Ci sono casi particolari in cui trovo che la struttura sia piuttosto complicata e provare a migrarlo nel mio script, dall'output defaults read , produce un errore.

Per ciascuna delle seguenti strutture, quale sarebbe il modo corretto per renderle defaults write -adattabili?

L'app Dizionario di Apple, questa sezione specifica è del tipo array . Sono interessato a prendere la sottosezione dictionaries , così com'è, e inserirla nel mio 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 , vorrei prendere questo così com'è e inserirlo nel mio script (questo è solo un breve estratto, la sezione continua e continua con quegli array "annidati" ".

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

E un altro esempio, l'elenco delle scelte rapide Sip (un'app per la selezione del colore). È un array con nidificato dictionaries . Anche in questo caso, il codice effettivo è molto più lungo, con alcuni altri sottosegmenti ( name = General ), con quelli che hanno molti altri sottosegmenti ( 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;
            }, ...

Ho provato a utilizzare solo -array e -array-add , -dict e -dict-add , tutto senza successo. Ho anche provato a utilizzare l'utilità PlistBuddy, senza risultati.

Grazie mille!

    
posta voronoi 11.09.2018 - 19:34
fonte

0 risposte

Leggi altre domande sui tag