Algunos usuarios tienden a pensar (muchas veces por desconocimiento o prejuicio) que el sistema GNU/Linux es difícil de usar, y que muchas tareas no pueden realizarse sin acudir a la linea de comandos. La verdad es que las versiones modernas de GNU/Linux que están pensadas para ser amigables para el usuario, como por ejemplo Ubuntu 7.10 Desktop, pueden utilizarse perfectamente por medio de interfaces gráficas, a través de las cuales pueden realizarse perfectamente todas las tareas cotidianas.

Sin embargo, sería equivocado pensar por ello que el intérprete de comandos ( el shell) es una interfaz pasada de moda. El intérprete de comandos permite realizar muchas cosas que no se pueden hacer por medio de la interfaz gráfica, y es de fundamental importancia para usuarios avanzados como administradores de sistemas, o programadores. Veamos algunos ejemplos de tareas comunes que requieren el uso del shell:

* Permite automatizar tareas que se realizan en forma repetida. Por ejemplo podemos tener un script (esto es un programa en el lenguaje del shell) que efectúe una copia de respaldo (backup) de nuestros archivos, y con la ayuda del cron hacer que nuestro script se ejecute todos los días (o todas las semanas) a una determinada hora.

* Otra aplicación común es la personalización de los scripts de inicio del sistema.

* El shell permite ejecutar comandos en forma remota en una máquina a la cual no tenemos acceso físico, por ejemplo por medio de secure shell (ssh). Como en un sistema Unix virtualmente cualquier tarea se puede realizar desde la linea de comandos, ello significa que basta tener un acceso por ssh, para poder realizar cualquier tarea en una computadora situada quizás en la otra punta del mundo.

* Si tengo que explicarle a alguien como realizar alguna tarea, una descripción del tipo “buscá tal ícono y apretá tal botón” es sumamente vaga e imprecisa, ya que distintos escritorios o distintas versiones del sistema, pueden tener una apariencia visual completamente diferente, y lo más probable es que esa persona no logre realizar exitosamente la tarea. En cambio, si le digo “ejecutá tal comando”; ello constituye una descripción exacta, sin ninguna ambigüedad, y por ello es altamente probable que la persona pueda realizarla con éxito.

*Al crear un pequeño script para ejecutar varias tareas en forma automática, el usuario de Unix/Linux se transforma sin pensarlo demasiado en un improvisado programador. Es lo que Eric Raymond llama “casual programming” en su libro The Art of Unix Programming. Esto significa que el sistema Unix no tiene barreras de entrada para quienes desean aprender a programar. Escribir nuestro primer programa es tan fácil, como juntar un par de comandos, y escribirlos en un archivo en un determinado orden. El usuario toma entonces conciencia de que la programación no es, como algunas personas creen, un arte hermético sólo para iniciados; sino que todos podemos programar.

* La linea de comandos permite que un programa sea ejecutado por otros programas. Esto se relaciona con la filosofía de Unix, donde cada pequeño programa efectúa una o muy pocas tareas, pero los programas se pueden intercomunicar entre sí para realizar tareas complejas, utilizando las interfaces provistas por el sistema (linea de comando, redirección, pipes, etc.)

Como vemos, lejos de ser obsoleta, la linea de comandos es una interfaz potente y versátil, que presta una funcionalidad insustituible. Cuando alguien me presta una computadora con un sistema Windows, lo primero que busco desesperado (y lógicamente no encuentro), es un shell. El intérprete de comandos de Windows es realmente tosco y primitivo en relación al intérprete de comandos de Linux (Bash)

Quizás la prueba más contundente de que la linea de comandos no es una interfaz obsoleta, es que a pesar de que los sistemas de Apple tienen la merecida fama de ser los que tienen las interfases de usuario mejor diseñadas, no por ello el sistema Mac OS X deja de venir con el intérprete de comandos Bash incorporado.

En resumen, para los usuarios avanzados de Linux, el shell es una herramienta de gran utilidad y potencia. Para decirlo en una frase “Denme un shell y moveré al mundo”.

Anuncios

Así titula Lucas Coudures la crónica que hace en su blog del evento de ayer del Unlux. Realmente quiero sumarme a sus palabras, y agradecer y felicitar a los amigos del Unlux por como encararon el evento, la dedicación y compromiso que pusieron, por cómo afrontaron las dificultades que surgieron , y también por la buena onda que hizo que todos los disertantes y asistentes nos sintiéramos muy cómodos en el evento.

Como relata Lucas, incluso tuvimos un corte de luz que afectó a toda la zona de Lujan, cosa que creo que es la peor pesadilla de cualquier organizador de un evento de informática. Perse a lo cual, y gracias a la buena onda de todos, el evento continuó: algunas charlas debieron darse con tiza y pizarrón. Por ejermplo, Lisandro Perez Meyer dio una excelente charla sobre intorducción al desarrollo de applicaciones con QT, copiando pedazos de código a mano en el pizarrón.Y también, tuvimos una charla que quedará en la antología de los eventos de software libre: la de Matías Capeletto sobre Herramientas Open Source, que dio en en una ronda, sentados en el pasto, y mate de por medio.

También tuvimos una reunión del joven proyecto Universidad Libre (donde no faltaron unas facturas para compartir). Después volvió la luz, y pude dar mi charla sobre software libre para matemática, en el salón Auditorio, haciendo uso del cañon (todo un lujo). El evento finalizó con dos charlas para los que se habían quedado con las ganas (por culpa del corte de luz): las charlas sobre Pyweek, y sobre desarrollo de juegos en 3D con software libre.

Después nos fuimos a comer y tomar unas cervezas (como corresponde en todo evento de software libre que se precie de tal 🙂 ) con varios de los organizadores y los asistentes a una pizería en el centro de Lujan. Tengo que agradecer también a Roberto Allende (desarrollador de Plone), quien allí mismo, y en un improvisado mini code-sprint, prendió su notebook y me enseñó a usar Smart Folders, una característica muy interesante de Plone.

Fue otra gran jornada para la comunidad de software libre, donde todos compartimos gratos momentos, nos divertimos y aprendimos algo. Así que a todos, organizadores, disertantes y asistentes, muchas gracias.