Ene 082008
 

Concepto de entradas y salidas

Titulo el artículo ‘La fontanería’, porque vamos a hablar de streams (esta palabra en inglés significa arroyo, o corriente de agua), pero en informática es un flujo de datos, y de eso vamos a hablar de como fluyen los datos entrando y saliendo de los programas y de como podemos canalizarlos.

Esto no es algo propio de la shell bash, es algo inherente a Linux, y a cualquier Unix en general, no se puede entender un sistema operativo tipo Unix sin entender una de sus principales características, el ‘stream‘. Un stream es un canal de entrada-salida de datos. Cada proceso en Linux para comunicarse con el exterior dispone al menos de tres streams, llamados stdin (entrada estándar), stdout (salida estándar) y stderr (salida de errores), veámoslo con más detalle.

Seguir leyendo «Curso de bash para fotógrafos linuxeros. (9) La Fontanería»

Nov 232007
 

La gestión de procesos

Procesos en segundo plano y en primer plano

Cuando os hablé de comandos internos y externos, no sé si recordaréis que introduje el concepto de programa y proceso. Un programa existe sin necesidad de que esté ejecutándose, cuando se ejecuta un programa se inicia un proceso que termina cuando el programa finaliza. Un mismo programa puede estar ejecutándose en varios procesos distintos de forma simultánea. Hasta ahora todas las ordenes que escribíamos aunque fuesen compuestas, ejecutan los programas o los comandos de forma secuencial, es decir no comenzamos otro hasta que finaliza el primero. Esto es así incluso aunque los metamos de una sola vez en una orden compuesta con cualquiera de los separadores vistos hasta ahora. Los procesos en los que se ejecuta cada comando no son pues simultáneos.
Seguir leyendo «Curso de bash para fotógrafos linuxeros. (8) Gestión de múltiples procesos»

Oct 302007
 

Comandos internos y externos

Hay una serie de comandos que la propia shell ejecuta sin ninguna ayuda, a esos comandos les llamaremos comandos internos.
A modo meramente informativo puedo poner una relación de los comandos internos de bash: ., :, [, alias, bg, bind, break, builtin, caller, cd, command, compgen, complete, continue, declare, dirs, disown, echo, enable, eval, exec, exit, export, false, fc, fg, getopts, hash, help, history, jobs, kill, let, local, logout, popd, printf, pushd, pwd, read, readonly, return, set, shift, shopt, source, suspend, test, times, trap, true, type, typeset, ulimit, umask, unalias, unset, wait

Cualquier otro comando que no se encuentre entre estos, bash no sabe ejecutarlo, y entenderá que es un programa externo, así que lo buscará en una serie de directorios que se la han configurado.

Seguir leyendo «Curso de bash para fotógrafos linuxeros. (7) Comandos internos y externos. Órdenes compuestas.»

Oct 262007
 

Introducción a las variables y parámetros

Cualquiera que conozca cualquier lenguaje de programación tendrá ya claro el concepto de variable, pero para los que no sabéis programar es conveniente hacer una pequeña introducción.

Todo el mundo sabe usar una calculadora. Todas las calculadoras tienen una o varias teclas de ‘memoria’, usando esas teclas podemos almacenar un valor con el que estamos trabajando, para poder recuperarlo después, también podemos hacer operaciones con ese valor, como sumarle o restarle cosas. Una variable, en programación, es muy similar a ese concepto, es un almacén donde guardo un dato, que puedo recuperar cuando lo necesito. Puedo modificar o borrar el dato cuando quiera, es por eso que a esa ‘memoria’ se da el nombre de variable. A diferencia de las calculadoras que normalmente solo tienen una ‘memoria’ con las variables tenemos cuantas necesitemos, es decir podemos almacenar no solo un valor sino muchos, cada uno en un espacio distinto. Para distinguir cada uno de estos espacios de almacenamiento es necesario darle un nombre a cada uno, los nombres los elige el usuario a su libre albedrío, pero siguiendo ciertas reglas.

Seguir leyendo «Curso de bash para fotógrafos linuxeros. (6) Variables y parámetros»

Oct 222007
 

Me estuve planteando que para hacer más ameno el curso deberíamos empezar ya a hacer scripts. (Ya sé que la palabra script no existe en castellano pero decir guiones o cualquiera de sus sinónimos no me parece adecuado, así que, y con la venia, seguiré diciendo script aun consciente de que no es correcto).
Primero pensé que como había que trabajar con los permisos de ejecución se hacía imprescindible explicar antes lo de los permisos en linux, y de hecho escribí un artículo sobre los permisos pero al terminar lo vi tan ‘infumable’ que no me atrevo a publicarlo. Ahora he retomado el asunto de explicar los scripts, y cuando haya que hablar de permisos daré unas breves nociones pero sin meterme a fondo. Quizá más adelante volvamos sobre el tema, para ver el tema de los permisos a fondo, pero de momento no lo considero imprescindible.

Seguir leyendo «Curso de bash para fotógrafos linuxeros. (5) Hola mundo»

Oct 022007
 

La expansión de llaves

Lo primero que hace bash al analizar una orden es separarla en palabras, luego comprueba si alguna de las palabras debe ser expandida. Hay ciertas expresiones que son expandidas cuando bash las analiza para producir un resultado distinto a lo que hemos escrito. Lo primero que analiza bash es si alguna palabra contiene expresiones entre llaves ‘{}’. Te gustará este tipo de expansión porque sirve para escribir menos. Básicamente la expansión de llaves convierte una palabra en tantas como expresiones pongamos entre las llaves separadas por comas.

Seguir leyendo «Curso de bash para fotógrafos linuxeros. (4) Las llaves y los comodines»