Bash shell es uno de los programas que más usamos en Linux y muchas veces no nos damos cuenta de ello. Vamos a ver ¿qué es y para qué sirve?
Vale empezar por lo que no es: la terminal de Linux. Hay quienes confunden Bash con la terminal porque es lo primero que ven cuando abren la terminal.
Bash se define como un intérprete de comandos. Va corriendo una a una las órdenes introducidas por nosotros, como alternativa podemos usar directamente un archivo que contiene todas las instrucciones —una forma de programación híbrida—.
Bash corre sobre un shell. Un shell es simplemente un macroprocesador que ejecuta comandos.
Hay una diversidad de shells, entre ellas está Bash. Por lo general una distribución de Linux viene con dos o más opciones. Las podemos ver si escribimos en la terminal:
vi /etc/shells
En mi caso aparece este listado:
/bin/sh /bin/bash /usr/bin/bash /bin/rbash /usr/bin/rbash /bin/dash /usr/bin/dash
Es importante entender que cuando usamos la terminal y escribimos comandos como ls, pwd, clear, etc. estamos usando Bash, pero a un nivel básico. Para poder explotar al máximo todo el potencial de Bash tenemos que aprender sobre bash scripting.
El bash scripting es realizar una programación usando las instrucciones que están comprendidas en Bash -> shell.
Usar las funciones de Bash a su nivel de scripts nos ayuda a eliminar las tareas repetitivas. Escribimos la tarea que se debe realizar y después solo la dejamos programada, incluso las veces que tiene que repetirse. Escribimos una vez, ejecutamos muchas veces.
Otra de las razones para usar el Bash scripting es para dar dinamismo a las tareas, mediante variables y marcadores de posición (placeholders) es posible alcanzar un nivel profesional de uso de la terminal.
Si queremos contar con información resumida del shell Bash podemos escribir en la terminal:
man bash
Y para ahondar en la información y ser un ‘pro’ en su uso lo recomendable es que leamos el manual oficial de referencia que se encuentra en el sitio de la GNU.org.
¿Tienes alguna consulta o duda relacionada con Bash? Escríbenos en los comentarios para que te podamos ayudar.
Hola a todos
Tengo el siguiente código que me lo pasaron para correr un programa en Fiji (un analizador de imágenes) de tal suerte que en la línea 5 corra la app de Fiji, en la línea 7 un script que corra dentro de Fiji y en la línea 11 cargue las imágenes a analizar (son varias pero creo que como me pasaron el código 3_1). Tal como está el código me manda el siguiente error:
./ObtenHistogramasFondoNegroE_karl.zsh: line 11: /Users/karl/neto/pba/images/ImagenPrueba_3_1.tiff: cannot execute binary file
Ignoro si el error es en el archivo ImagenPrueba_3_1.tiff o en algún otro. Sé que el código corre perfectamente bien en LINUX pero yo necesito correrlo en MacOs. Lo que me encantaría es que de este path corriera todas las imágenes ahí contenidas.
Muchas gracias y ahí va el código que me pasaron:
#!/bin/bash
echo 2
#fijiBin=»/Applications/Fiji.app»
#fijibin=»/Users/karl/neto/Fiji.app»
fijiBin=»/Users/karl/neto/Fiji.app/Contents/MacOS/ImageJ-macosx»
echo 6
script=»/Users/karl/neto/pba_fiji»
#script=»/Users/karl/neto/AnalizaImagenCompletaFondoNegro-PruebaE_karl.ijm»
echo 9
#PASSED=$(readlink -n «/Users/karl/neto/pba/images/ImagenPrueba_3_1.tiff») #fullpath
PASSED=$(readlink -n «$1») «/Users/karl/neto/pba/images/ImagenPrueba_3_1.tiff» #fullpath
echo 12
echo 13
if [ -d «${PASSED}» ] ; then
echo 15
shopt -s globstar
lista=»$PASSED»/listaArchivosHistograma.txt
echo «Procesando con lista de archivos»;
echo «$lista»;
echo «–«;
ls -d -1 «$PASSED»/**/*tif? > «$lista»
cat «$lista»
echo «–«;
$fijiBin -macro $script «$lista:LA»
echo 25
else
if [ -f «${PASSED}» ]; then
echo «${PASSED} is a file»;
$fijiBin -macro $script «$PASSED»
else
echo «${PASSED} is not valid»;
exit 1
fi
fi
echo 35
-dBATCH -sOutputFile=GrayScal»$var».pdf «$var»
echo 37
#done