De vez en cuando veo instrucciones que te permiten cambiar la funcionalidad de algunas aplicaciones en OSX usando defaults
la línea de comandos. Sé que la gente encuentra estas directivas de configuración escaneando la aplicación. ¿Cómo se hace eso?
Solución: podría haber jurado que lo era option
. Culpa mía.
Respuesta1
Puede usarlo defaults
no solo para cambiar estos valores, sino también para enumerarlos.
defaults read -g
muestra opciones "globales", mientras defaults read com.company.ProgramName
muestra elvalores predeterminados(es decir, opciones de configuración) para un programa en particular. En este contexto, com.company.ProgramName
¿es elidentificador de paquetedel programa, por ejemplo com.apple.TextEdit
o com.culturedcode.Things
.Más sobre esto.
Por ejemplo corre defaults read com.apple.Finder
y encontrarás una línea que dice AppleShowAllFiles = FALSE
o algo parecido. Ahora sea aventurero y ejecute defaults write com.apple.Finder AppleShowAllFiles -boolean TRUE
y reinicie Finder para ver qué sucede.
Para más información sobre cómo utilizar defaults
, ingresa man defaults
para ver su documentación. Puede volverse bastante complejo y algunas cosas relacionadas con listas y diccionarios son prácticamente imposibles de hacer. Una vez que llegue tan lejos, busque /usr/libexec/PlistBuddy
: hay algunos ejemplos de cómo usarlo en este sitio, simplemente use la función de búsqueda.
Descubra el identificador de paquete de un programa en particular:
Para saber para qué utiliza su aplicacióncom.vendor.tuaplicación, haga clic derecho en el paquete de aplicaciones, seleccioneMostrar el contenido del paquete, navegar aContenido, abiertoLista de informaciónusando un editor de texto, o mejor un editor de lista de propiedades comoEditor de lista de propiedadesoXcódigo 4(ambas parte de las herramientas de desarrollo de Apple) y busqueIdentificador de paquete CFo similar.
Otra herramienta que puedes utilizar es strings
. Mostrará todas las cadenas (es decir, secuencias de caracteres posiblemente útiles) en un archivo binario. Tenga en cuenta que esto producemontonesde falsos positivos, ya que también se muestran las llamadas a funciones de Objective-C, así como la salida regular que se muestra en la interfaz de usuario.
MisteriosTambién ofrece una base de datos de configuraciones ocultas para OS X, ordenadas por aplicación. Estos se pueden cambiar usando defaults
. Para su comodidad, también puede descargar un Panel de preferencias desde el sitio web, que le permite cambiarlas en las Preferencias del sistema.
Respuesta2
#!/bin/sh
# find key names in ~/Library/Preferences/`osascript -e 'id of app "iTunes"'`.plist
defaults read com.apple.iTunes | ruby -e 'puts STDIN.read.scan(/^ \"?([a-zA-Z_.\-]+?)\"? /)' > keys.txt
# extract identifiers from a binary
# (the output is tens of thousands of lines even after grepping)
strings - /Applications/iTunes.app/Contents/MacOS/iTunes | egrep "^[a-zA-Z][a-zA-Z_.\-]{7,}$" | ruby -e 'puts STDIN.read.split("\n").uniq' > strings.txt
# the identifiers for preferences often appear near each other
for x in `cat /0/keys.txt`; do
grep -C 10 "$x" strings.txt
done | ruby -e 'puts STDIN.read.split("\n").uniq' > strings2.txt
Otro método que utiliza el depurador GNU:arcticmac.home.comcast.net/~arcticmac/tutorials/gdbFindingPrefs.html