El Software y el conocimiento debe ser Libre
Posts tagged Bash
Cambiando el terminal con Bashish
Jul 15th
Si trabajas mucho con el terminal, seguramente te gustará esto. Con el programa Bashish podrás cambiar el aspecto de tu terminal de forma rápida y elegante.
Para ver los temas instalados y disponibles, tecleamos en un terminal:
#bashish list
Para usar un tema, solo basta añadir el nombre del mismo:
#bashish nombre_del_tema

Realizando GUI scripting con bash
Jul 14th
Cuando se trata de escribir aplicaciones personalizadas para servidores o equipos de escritorio en Linux, hay una serie de opciones de lenguajes que podemos usar. Puede escribir aplicaciones en Python, Perl, Ruby, o incluso PHP, entre tantos otros. Los scripts pueden ser escritos en el shell y, usando bash, zsh, o tcsh, por citar algunos. De todos ellos, la escritura de scripts en el shell (bash viene con casi todas las distribuciones Linux por ahí), es quizás el más fácil de aprender y la más rápida de escribir.
Lo bueno de un shell script es que, en sí mismo, no hay mucho que hacer en cuanto a programación. Los shell scripts son en realidad una secuencia de comandos que se escriben en la línea de comandos. Se admite las declaraciones de tipo if-then-else, admite bucles, y puede llegar a ser bastante complejo si queremos que sea, pero no tiene que serlo.
Y, al igual que otros lenguajes, los shell scripts pueden tener interfaces GUI (gráficos) también. Hay unas cuantas opciones diferentes como: Zenity para el escritorio GNOME, kdialog para el escritorio KDE, y un diálogo para TUI, ofreciendo menús y mensajes apropiados para la CLI. Un ejemplo del poder del uso de los shell scripts, es que podemos instalar un sistema operativo GNU/Linux desde bash, utilizando diálogos para realizar las preguntas sobre la instalación.
Con Zenity y kdialog, puede escribir una secuencia de comando que pregunten a los usuarios del sistema a través de ventanas GUI. Por ejemplo, para pedir al usuario que responder a una pregunta con un “Sí” o “No” se debería utilizar:
zenity --question "Do you wish to proceed?"
rc=$?
if [ "${rc}" == "0" ]; then
answer="yes"
else
answer="no"
fi
y el equivalente para kdialog:
kdialog --yesno "Do you wish to proceed?"
rc=$?
if [ "${rc}" == "0" ]; then
answer="yes"
else
answer="no"
fi
Ambos Zenity y kdialog mostrará más información con la opción de ayuda, y tiene una página de manual de Zenity que pueden ser referenciadas en busca de ayuda.
Otro ejemplo es en la creación de una barra de progreso. Por ejemplo, para mostrar una barra de progreso mientras se encuentran todos los archivos de copia de seguridad en su directorio principal, puede utilizar:
find . -name '*~' | tee >(zenity --progress --pulsate --title "Buscando fichero backups" --text "Buscando fichero backups...") >salida.txt zenity --width 400 --height 100 --title "File list" --text-info --filename=out.txt
kdialog trabaja de manera diferente, así que vamos a ver unos ejemplos. Vemos que tenemos que engañarlo con el uso de sleep, para realizar una espera. kdialog es un tanto especial.
ref=$(kdialog --progressbar "Buscando ficheros de backup" 3)
qdbus ${ref} org.kde.kdialog.ProgressDialog.setLabelText "Buscando ficheros de backup..."
qdbus ${ref} Set org.kde.kdialog.ProgressDialog value 1
find . -name '*~' >salida.txt
qdbus ${ref} Set org.kde.kdialog.ProgressDialog value 2
sleep 2
qdbus ${ref} Set org.kde.kdialog.ProgressDialog value 3
qdbus ${ref} org.kde.kdialog.ProgressDialog.close
kdialog --textbox salida.txt 400 100
Ambos mostrarán una barra de progreso (de muy corta duración) y luego se mostrará la salida del comando find (el cual se redirigio a salida.txt). Tenga en cuenta que en KDE3 kdialog es diferente que en KDE4 (el ejemplo es para KDE4). Si utiliza KDE3, la comunicación se realizá a través de DCOP, en lugar de DBUS.
Estas ilustraciones son muy simples, pero pueden demostrar las posibilidades de lo que puede hacerse con cualquier herramienta. De los dos, me parece Zenity mucho más fácil de trabajar, pero trabajan muy bien, tanto, y por supuesto depende de su entorno de elección.
La programación de GUI para shell scripts, con los programas de ayuda como Zenity y kdialog, es mucho más fácil de lograr que los programas de interfaz gráfica de usuario para entornos de programación. Si tiene que escribir un programa que requiere interacción del usuario, y también es necesario que la interacción sea a través del escritorio y no una terminal o shell, a continuación, estas herramientas pueden ayudar a alcanzar ese objetivo.
Si le ha servido de algo este artículo, deje un comentario en el mismo post.
