Bash

Texto aleatorio en bash II

Desde la consola podemos generar cadenas aleatorias usando los comandos:
cat /dev/urandom : fichero que genera caracteres aleatorios.
tr : nos permite modificar caracteres de un flujo de datos.
fold: muestra el contenido de un fichero "ajustado" al número de columnas que le pasemos como parámetro (-w).
head: muestra las primeras líneas de un archivo. (tail muestra las últimas).

Ejemplo:

Borrar TODOS los ficheros y directorios desde la consola

Si necesitamos un comando para borrar todos los ficheros y directorios en linux seguramente utilizaremos el siguiente:

$ rm -rf *

La opción "-r" borra los directorios recursivamente y la opción "-f" hace que el comando no nos pida confirmación.

Pero este comando no funciona en todos los casos, ¿qué ocurre si tenemos un fichero (o directorio) que empieza con un guión (-)?

Bash Scripting, ejemplo con arrays

### fichero lenguajes.sh
#!/bin/bash
arr=( "espanyol#hola" "ingles#hello" "frances#bonjour")
len=${#arr[*]}
i=0
while [ $i -lt $len ]; do
   lenguaje=$(echo ${arr[$i]} | cut -d"#" -f1 2>/dev/null)
   if [ "$lenguaje" == "$1" ]; then
     echo ${arr[$i]} | cut -d"#" -f2
   fi
   i=$(expr $i + 1)
done
$ sh lenguajes.sh espanyol
hola
$ sh lenguajes.sh ingles
hello

Programación bash: error "let: not found"

A veces, al ejecutar un script en bash:

# sh script.sh

Obtenemos el siguiente error:

let: not found

Esto ocurre porque la shell que utilizamos no es la correcta, por defecto se usa dash y la orden "let" solo funciona con bash. (en dash podemos usar "expr" en vez de "let").
Al ejecutar el script de la siguiente forma funcionará perfectamente: