GNU/Linux >> Linux Esercitazione >  >> Linux

usando random per generare una stringa casuale in bash

Usa l'espansione dei parametri. ${#chars} è il numero di caratteri possibili, % è l'operatore modulo. ${chars:offset:length} seleziona il/i carattere/i alla posizione offset , ovvero 0 - length($chars) nel nostro caso.

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

Un altro modo per generare una stringa esadecimale di 32 byte (per esempio):

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

aggiungi -u se preferisci invece i caratteri maiuscoli.


Per chi cerca una stringa alfanumerica casuale in bash:

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

Lo stesso di una funzione ben documentata:

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. Come generare una password casuale in Linux usando /dev/random

  2. Sostituzione di stringhe usando un dizionario?

  3. Come dividere una stringa nello script Bash

  4. Utilizzo delle istruzioni Case in Bash

  5. Array in Bash non trovato

Bash concatena le stringhe

Come verificare se una stringa contiene una sottostringa in Bash

10 modi per generare una password casuale su Linux

Sostituzione di String in Bash

Bash Scripting – Manipolazione di stringhe

Utilizzo del comando Bash printf per la stampa di output formattati