Soy adicto a la terminal (incluso en Mac OS X)
3 mar 07Hace casi seis años que convivo únicamente con sistemas UNIX (GNU/Linux y Mac OS X). Si algo me ha quedado de esta convivencia es una tremenda dependencia de la terminal. Yo sin mi bash no soy nadie :)
Cuando llegué a Mac OS X había algo que no me gustaba nada, no sabía cómo abrir los programas que tenía instalados desde la terminal. En Mac se empaquetan los programas en carpetas .app que contienen todos los recursos del programa (ejecutable incluido). Bastantes veces he visto por ahí gente que, para ejecutar una aplicación desde la terminal, hacían un bonito:
$ /Applications/Preview.app/Contents/MacOS/Preview
Sí, funciona, pero eso de escribir toda la ruta cada vez que hay que ejecutar un programa me parece demasiado estorbo... Afortunadamente, en Apple parece que también les parecía demasiado y ponen a nuestra disposición la orden open
$ open -a preview
$ open -a preview archivo.pdf
$ open imagen.dmg
...
Con esto el tema mejora bastante. Aun así tenía un problema, como buen adicto a la terminal también soy adicto al tabulador así que me hice un mini-script. El siguiente script:
#!/usr/bin/env bash
echo "alias finder=\"open -a finder\"" > $HOME/.bashrc_aliases
for i in $( ls /Applications | egrep \.app$ | awk -F / '{ print $NF}' | tr '[A-Z]' '[a-z]' | sed -e 's/\.app$//g' -e 's/ /A/g')
do
ALIAS=$(echo $i | sed -e 's/A/ /g' -e 's/[^a-z0-9]/-/g' -e 's/--/-/g')
echo "alias $ALIAS=\"open -a \\\"$(echo $i | sed -e 's/A/ /g')\\\"\"" >> $HOME/.bashrc_aliases
done
El script genera un archivo .bashrc_aliases con alias para todos los programas .app que tienes en el directorio /Applications (no entra en subdirectorios, aunque se podría apañar) y para finder. El contenido vendría a ser así:
$ head -n 10 .bashrc_aliases
alias finder="open -a finder"
alias address-book="open -a \"address book\""
alias adium="open -a \"adium\""
alias aurora="open -a \"aurora\""
alias automator="open -a \"automator\""
alias calculator="open -a \"calculator\""
alias camino="open -a \"camino\""
alias chess="open -a \"chess\""
alias cocoamysql="open -a \"cocoamysql\""
alias dvd-player="open -a \"dvd player\""
Creo que incluso para los que no sepan de la existencia de alias la orden es bastante descriptiva, al ejecutar estos alias, las siguientes órdenes serían equivalentes:
$ finder
$ open -a finder
$ finder $HOME
$ open -a finder $HOME
Yo tengo definido en mi crontab ejecute el script cada media hora (a muchos les parecerá demasiado, pero en algo hay que gastar los recursos del portátil ;D)
$ crontab -l
0/30 * * * * $HOME/.aliases &> /dev/null
Además tengo puesto que al iniciarse mi terminal se carguen todos los alias de .bashrc_aliases
$ head -n 4 .bashrc
#!/usr/bin/env bash
if [ -f $HOME/.bashrc_aliases ]; then
. $HOME/.bashrc_aliases
fi
Con esto ya lo tengo todo listo :)
Dicho esto, cualquier duda/sugerencia/corrección será bienvenida en los comentarios ^_^