La ganadería fue una práctica del hombre en la prehistoria, y con la necesidad de contar el ganado surgió el cálculo. La palabra cálculo en si proviene del latín ‘calculus’, piedra pequeña. Se dice que para contar el ganado se usaban inicialmente piedrecitas, por cada cabeza de ganado que salía a pastar se guardaba una piedra, y cuando la res volvía al redil se tiraba una de las piedras guardadas. Cuando ya no quedaban más piedras todos los animales estaban a buen recaudo.
Seguir leyendo «Curso de bash para fotógrafos linuxeros. (10) Aritmética sencilla»
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»
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»
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.
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»
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»