Cómo crear un archivo aleatorio .txt (texto legible para humanos como ascii) en linux

43

Necesito crear un archivo de texto que contenga datos de texto aleatorios que puedan ser leídos por humanos. Sé que podemos usar /dev/urandomy /dev/randompara obtener datos aleatorios. Pero no es legible por los humanos. Necesito crear un archivo que contenga formato de texto aleatorio. ¿Hay alguna forma de hacer eso?

Chinna
fuente
1
¿"Legible por los humanos" como si tuviera sentido real? ¿Oraciones completas? ¿O solo algunas palabras del diccionario?
slhck
Dependiendo de la definición de "aleatorio" y de lo que está tratando de lograr, hay una serie de generadores Lorem Ipsum disponibles o accesibles desde Linux, que a menudo se pueden descargar desde el repositorio de su distribución. Ver ¿Hay algo como un generador de lorem ipsum? , Generador de ipsum lorem sin conexión , aur.archlinux.org/packages/lorem-ipsum-generator , etc.
fixer1234

Respuestas:

93

Podemos hacerlo siguiendo el comando

base64 /dev/urandom | head -c 10000000 > file.txt

Crea un archivo con el nombre file.txt tamaño de 10 MB.

Chinna
fuente
1
Esto es genial, también agrega una nueva línea cada 76 caracteres también.
wisbucky
15

obtener la salida de:

tr -dc A-Za-z0-9 </dev/urandom 

y canalizarlo a un archivo.

Puede usar el comando head con -c o -n para limitar el tamaño del archivo

ejemplo para generar un archivo de 1kB a.txt:

tr -dc A-Za-z0-9 </dev/urandom | head -c 1024 > a.txt
usuario1403360
fuente
También puede usar en [:alnum:]lugar de A-Za-z0-9. Además, si desea que se esparzan espacios y nuevas líneas, puede hacer esta variación:tr -dc '[:alnum:] \n' ...
wisbucky
4

base64parece que solo genera caracteres alfanuméricos más /y +.

Me gusta esto para obtener más caracteres de "puntuación", como

'[:punct:]'
  Punctuation characters; in the 'C' locale and ASCII character
  encoding, this is ! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \
  ] ^ _ ` { | } ~

Entonces usa esto:

'[:graph:]'
     Graphical characters: '[:alnum:]' and '[:punct:]'

y se usa trpara eliminar comillas simples 'comillas invertidas' y barras invertidas \

tr -dc '[:graph:]' < /dev/urandom | tr -d \''\\'\` | head -c [size]

la -copción de tamaño headpuede tener un sufijo multiplicador: b 512, kB 1000, K 1024, MB 1000 * 1000, M 1024 * 1024, GB 1000 * 1000 * 1000, G 1024 * 1024 * 1024, y así sucesivamente para T, P , E, Z, Y.

Xen2050
fuente
3

Si no tienes / dev / urandom (porque tal vez estás usando una consola GitBash), puedes usar:

openssl rand 33000 -base64 -out dump.txt
Doughgle
fuente
3

Si quieres apegarte a palabras reales del diccionario, usa ese truco:

cat /usr/share/dict/words | sort -R | head -1024 > file.txt

Tenga en cuenta que no especifica la geometría (¿cuántas palabras por línea, cuántas líneas?)

Clemente
fuente