GNU/Linux >> Tutoriales Linux >  >> Linux

usando random para generar una cadena aleatoria en bash

Utilice la expansión de parámetros. ${#chars} es el número de caracteres posibles, % es el operador módulo. ${chars:offset:length} selecciona los caracteres en la posición offset , es decir, 0 - length($chars) en nuestro caso.

chars=abcd1234ABCD
for i in {1..8} ; do
    echo -n "${chars:RANDOM%${#chars}:1}"
done
echo

Otra forma de generar una cadena hexadecimal de 32 bytes (por ejemplo):

xxd -l 32 -c 32 -p < /dev/random

añadir -u si prefiere caracteres en mayúsculas.


Para aquellos que buscan una cadena alfanumérica aleatoria en bash:

LC_ALL=C tr -dc A-Za-z0-9 </dev/urandom | head -c 64

Lo mismo que una función bien documentada:

function rand-str {
    # Return random alpha-numeric string of given LENGTH
    #
    # Usage: VALUE=$(rand-str $LENGTH)
    #    or: VALUE=$(rand-str)

    local DEFAULT_LENGTH=64
    local LENGTH=${1:-$DEFAULT_LENGTH}

    LC_ALL=C tr -dc A-Za-z0-9 </dev/urandom | head -c $LENGTH
    # LC_ALL=C: required for Mac OS X - https://unix.stackexchange.com/a/363194/403075
    # -dc: delete complementary set == delete all except given set
}

Linux
  1. Usando Bash para la automatización

  2. Cómo generar una contraseña aleatoria en Linux usando /dev/random

  3. ¿Reemplazo de cadenas usando un diccionario?

  4. Cómo dividir una cadena en Bash Script

  5. 8 formas de generar una contraseña aleatoria en Linux

Bash concatenar cadenas

Cómo verificar si una cadena contiene una subcadena en Bash

10 formas de generar una contraseña aleatoria en Linux

Sustitución de cadena en Bash

Bash Scripting – Manipulación de cadenas

Uso del comando Bash printf para imprimir salidas formateadas