Come creare un file plist binario dalla riga di comando su OS X?

1

Sto cercando una soluzione per creare un file plist binario dalla riga di comando su OS X?

Voglio creare ~/.MacOSX/environment.plist e configurare il PATH lì.

So che questo file plist deve essere nel formato binario e so come scriverlo usando il comando defaults write . Tuttavia, ho bisogno di creare il file prima di fare questo, e la creazione di un file vuoto non funziona.

Nota: ho bisogno di una soluzione da riga di comando.

    
posta sorin 11.09.2012 - 16:52
fonte

3 risposte

6

Potresti anche creare un elenco di proprietà XML o vecchio stile e convertirlo con plutil:

plutil -convert binary1 test.plist

Modifica i file in posizione per impostazione predefinita. Puoi specificare un file di output diverso con -o o stampare su stdout con -o - .

    
risposta data 11.09.2012 - 17:47
fonte
0

Almeno già con Mac High Sierra (10.13.4), defaults write (es., se la forma defaults write com.example.test '{a = (b, 2);}' o defaults write com.example.testb "a" '(b, 2)' ) sta creando file plist binari per me in ~/Library/Preferences/ anche quando il file non è ancora stato creato.

E può essere creato in un particolare percorso scambiando un dominio con il percorso del file desiderato, ad esempio,

defaults write "/users/brett/Desktop/com.example.testc"  "a" '(b, 2)'

Anche la sintassi XML funziona:

defaults write "/users/brett/Desktop/com.example.testc" '<dict><key>a</key><array><string>b</string><string>2</string></array></dict>'

(Supponendo che JSON non funzioni (nonostante plist sia in grado di convertirlo in JSON).

Si può anche usare defaults import per creare un nuovo file plist binario, se defaults import <domain> - che consente (tramite stdin) di usare una delle sintassi sopra (o defaults import <domain> pathToExistingPlist , assumendo che il plist di riferimento sia esso stesso un file binario ).

Infine, si può usare defaults export su un file esistente, assumendo che sia espresso come XML o l'elenco di proprietà ASCII (o un altro plist binario).

defaults export com.example.test1 /path/for/com.example.testcopy.plist

Quest'ultimo è simile al comportamento del comando plutil nella risposta di @ user495470 tranne per il fatto che verrà copiato solo se si specifica un percorso nel secondo argomento che porta allo stesso file di quello a cui si fa riferimento nel primo ( dominio).

Ad eccezione della seconda sintassi export (che crea un <dict> vuoto dopo aver trovato un tipo non-dict in root), per uno dei precedenti, gli errori vengono dati quando si prova qualcosa tranne un dict alla radice.

    
risposta data 13.06.2018 - 11:25
fonte
-2

Questo pezzo di bash ha risolto il mio problema:

if [ ! -f '~/.MacOSX/environment.plist' ]; then
  mkdir -p '~/.MacOSX'
  defaults write ~/.MacOSX/environment.plist TEST_VAR 1
fi

Tuttavia, devo avvisare altri che OS X 10.8 sembra non caricare il file.

    
risposta data 11.09.2012 - 17:17
fonte

Leggi altre domande sui tag