Comment créer un fichier aléatoire .txt (texte lisible par l'homme comme ascii) sous linux

43

J'ai besoin de créer un fichier texte contenant des données textuelles aléatoires pouvant être lues par l'homme. Je sais que nous pouvons utiliser /dev/urandomet /dev/randompour obtenir des données aléatoires. Mais ce n'est pas lisible par les humains. Je dois créer un fichier contenant un format de texte aléatoire. Y'a-t'il un quelconque moyen d'y arriver?

Chinna
la source
1
"Lisible par l'homme" comme un sens réel? Phrases complètes? Ou juste quelques mots du dictionnaire?
Slhck
Selon la définition du terme "aléatoire" et ce que vous essayez d'accomplir, il existe un certain nombre de générateurs Lorem Ipsum disponibles ou accessibles depuis Linux, souvent téléchargeables à partir du référentiel de votre distribution. Voir Y at-il quelque chose comme un générateur de lorem ipsum? , Lorem ipsum générateur , aur.archlinux.org/packages/lorem-ipsum-generator , etc.
fixer1234

Réponses:

93

Nous pouvons le faire en suivant la commande

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

Il crée un fichier avec le nom file.txt d'une taille de 10 MB.

Chinna
la source
1
Cet excellent, il ajoute également une nouvelle ligne tous les 76 caractères aussi.
Wisbucky
15

obtenir le résultat de:

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

et le diriger vers un fichier.

Vous pouvez utiliser la commande head avec -c ou -n pour limiter la taille du fichier.

exemple pour générer un fichier de 1 Ko a.txt:

tr -dc A-Za-z0-9 </dev/urandom | head -c 1024 > a.txt
utilisateur1403360
la source
Vous pouvez également utiliser [:alnum:]au lieu de A-Za-z0-9. De plus, si vous voulez que les espaces et les nouvelles lignes tr -dc '[:alnum:] \n' ...
soient éparpillés
4

base64semble ne produire que des caractères alphanumériques plus /et +.

J'aime bien avoir plus de caractères de "ponctuation", comme

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

Alors utilisez ceci:

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

et utiliser trpour supprimer les guillemets `guillemets` et les barres obliques inverses \

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

l’ -coption de taille headpeut avoir un suffixe multiplicateur: b 512, 1000 Ko, 1024 Ko, 1000 MB, 1000, M 1024 * 1024, GB 1000 * 1000 * 1000, G 1024 * 1024 * 1024, etc. pour T, P , E, Z, Y.

Xen2050
la source
3

Si vous n'avez pas / dev / urandom (parce que vous utilisez peut-être une console GitBash), vous pouvez utiliser:

openssl rand 33000 -base64 -out dump.txt
pâte
la source
3

Si vous voulez vous en tenir à de vrais mots du dictionnaire, utilisez cette astuce:

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

Notez que vous ne spécifiez pas la géométrie (combien de mots par ligne, combien de lignes?)

Clément
la source