Utilizando el defaults
comando en Terminal , lo siguiente es un ejemplo sencillo de escribir un clave que contiene datos como su valor a un PLISTAS archivo :
% data='5468697320697320612064756D6D7920656E74727921'
% defaults write ~/Desktop/my.dummy.plist 'foobar' -data "$data"
% defaults read ~/Desktop/my.dummy.plist foobar
{length = 22, bytes = 0x5468697320697320612064756d6d7920656e74727921}
% /usr/libexec/PlistBuddy -c 'print foobar' ~/Desktop/my.dummy.plist
This is a dummy entry!
%
Para convertir el contenido de un archivo a datos hexadecimales adecuado para su uso con el defaults
comando Utiliza lo siguiente:
% data="$(xxd -p '/path/to/file' | tr -d '\n')"
O en lugar de "$data"
en el ejemplo defaults
comando Sustituirlo por:
"$(xxd -p '/path/to/file' | tr -d '\n')"
Ejemplo:
defaults write ~/Desktop/my.dummy.plist 'foobar' -data "$(xxd -p '/path/to/file' | tr -d '\n')"
Notas:
Este sintaxis también funciona:
data='<5468697320697320612064756D6D7920656E74727921>'
defaults write ~/Desktop/my.dummy.plist 'foobar' "$data"
Tenga en cuenta que <
y >
se utilizan como parte de data
y el -data
opción fue no utilizado para el tipo de valor del objetivo clave en el defaults
comando .
El datos hexadecimales utilizado en el ejemplo se creó utilizando lo siguiente comando para convertir el cadena de texto a datos hexadecimales :
% xxd -p -u <<< 'This is a dummy entry!'
5468697320697320612064756D6D7920656E747279210A
%
El uso de la -u
opción con el xxd
comando no es absolutamente necesario. Sólo me gusta ver datos hexadecimales en mayúsculas en el ejemplo .
Después de escribir el datos a un PLISTAS archivo en el primer ejemplo más arriba, utilizo PlistBuddy
para leer el valor del objetivo clave . Tenga en cuenta que en este ejemplo sencillo el valor de foobar
es sólo un cadena de texto y emite la información convertida datos hexadecimales como se muestra, sin embargo, si el valor de la datos en el objetivo clave es, por ejemplo, un binario PLISTAS archivo mismo u otros binarios datos El salida no va a ser bonito.
0 votos
¿El
-data
opción no hacer exactamente esto? Puede utilizarod
para convertir binario a hexadecimal.0 votos
No tengo ni idea de cómo hacerlo correctamente. Según el manual ( ss64.com/osx/defaults.html ),
-data Allows the user to specify a bunch of raw data bytes as the value for the given preference key. The data must be provided in hexadecimal.