Generación aleatoria de caracteres: ¡con salida aleatoria!

Esto es lo que crunch puede generar:

[user@localhost ~] crunch 3 3 ab Crunch will now generate the following amount of data: 32 bytes 0 MB 0 GB 0 TB 0 PB Crunch will now generate the following number of lines: 8 aaa aab aba abb baa bab bba bbb [user@localhost ~] 

¿Pero hay alguna solución que sea igual a la crisis, la única diferencia es que las salidas son aleatoriamente?

 [user@localhost ~] SOMEMAGIC 3 3 ab bba bab abb aaa bbb aab baa aba [user@localhost ~] 

¡Usar un método tipo "R" no es bueno! Porque la solución debe ser "sobre la marcha"

Imitando el crujido

Algo así generará todas las permutaciones del set {a, b} @ 3 strings de largo, y mezclará la salida usando shuf .

 $ printf "%s\n" {a..b}{a..b}{a..b} | shuf bbb aab abb bba baa aba bab aaa 

En realidad, esto no es diferente de usar sort -R .

Ocultar la aleatorización

Si tiene la intención de ocultar la interfaz para darle a scriptX una list de arguments y devuelve una list aleatoria similar a crunch , envolver esto en un alias o un script de shell haría el trabajo. Puede poner lo siguiente en un script de shell llamado mycrunch.bash :

 #!/bin/bash crunch "$1" "$2" "$3" | sort -R 

Marcarlo como ejecutable:

 $ chmod +x mycrunch.bash 

Y ejecutarlo así:

 $ ./mycrunch.bash 3 3 ab 

Filtrado de salida de contracción falsa

Puede usar un command grep dentro del script anterior para filtrar esas líneas de la siguiente manera:

 crunch "$1" "$2" "$3" | grep -vE "Crunch|0" | sort -R 

Eso se encargará de omitir cualquier línea que contenga las cadenas "Crunch" o "0".

Bueno, podrías simplemente canalizar todo después de la línea de salida que comienza con 'Crunch now now' a través de sort -R. Me gusta esto:

 crunch 3 3 ab| sed -e '0,/^Crunch will now/d' | sort -R 

Sin embargo, aún no estoy seguro si esto count como 'sobre la marcha'.

¿Pero hay alguna solución que sea igual a la crisis, la única diferencia es que las salidas son aleatoriamente?

No.

Este problema se puede resolver solo en dos pasos:

  1. Crea todas las combinaciones posibles
  2. Generar permutación aleatoria de resultado

No puede hacer ambas cosas al mismo time, al less no con un solo algorithm para crear combinaciones. Debería tener diferentes algorithms y al principio del progtwig elegir uno random, teniendo cuidado de que los resultados finales de esos diferentes algorithms se distribuyan uniformemente.

De todos modos, dudo que encuentres algo simple , muy diferente a crunch + sort -R .