openssl rand -base64 10
gera mais de 10 símbolos. Ele gera 10 bytes (que podem corresponder a caracteres não imprimíveis) e os codifica (usando um conjunto de caracteres imprimíveis).
Para gerar símbolos aleatórios de um determinado conjunto, use tr
. Exemplo:
LC_ALL=C </dev/urandom tr -cd '[:lower:][:digit:]+\-._' | head -c 10 ; printf '\n'
Aqui tr
recebe bytes de /dev/urandom
e passa apenas os correspondentes; head
termina o canal quando o número de caracteres especificado é atingido; printf
adiciona uma nova linha.
Verifique man 1 tr
e crie seu próprio conjunto desejado.
Notas:
-
LC_ALL=C
faz com que tr
ignore sua localidade.
- escapei de
-
(daí \-
) porque tr
interpreta +-.
como um intervalo; ,
está dentro desse intervalo. Eu quis dizer +-._
literalmente, não incluindo ,
.