58 votes

Comment créer un fichier .txt aléatoire (texte lisible par l'homme comme ASCII) dans Linux

J'ai besoin de créer un fichier texte qui devrait contenir des données texte aléatoires pouvant être lues par des humains. Je sais que nous pouvons utiliser /dev/urandom et /dev/random pour obtenir des données aléatoires. Mais ce n'est pas lisible par les humains. J'ai besoin de créer un fichier qui contient un format de texte aléatoire. Y a-t-il un moyen de le faire ?

1 votes

"Lisible par les humains" comme donner un sens concret? Des phrases complètes? Ou juste des mots de dictionnaire?

0 votes

Selon la définition de "aléatoire" et de ce que vous essayez d'accomplir, il existe un certain nombre de générateurs Lorem Ipsum disponibles dans, ou accessible depuis, Linux, souvent téléchargeables depuis le référentiel de votre distribution. Voir Y a-t-il quelque chose comme un générateur de lorem ipsum ?, Générateur de lorem ipsum hors ligne, aur.archlinux.org/packages/lorem-ipsum-generator, etc.

135voto

Nous pouvons le faire en suivant la commande

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

Cela crée un fichier nommé file.txt d'une taille de 10 Mo.

4 votes

Ceci est génial, il ajoute également un saut de ligne tous les 76 caractères.

0 votes

Utilisez le drapeau -w 0 pour base64 si vous ne voulez PAS ces sauts de ligne. Cela mettra tout sur une seule ligne.

17voto

user1403360 Points 354

Obtenez la sortie de :

tr -dc A-Za-z0-9 

`et redirigez-la 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  a.txt`

0 votes

Vous pouvez également utiliser [:alnum:] au lieu de A-Za-z0-9. De plus, si vous voulez des espaces et des sauts de ligne mélangés, vous pouvez utiliser cette variation : tr -dc '[:alnum:] \n' ...

5voto

user230408 Points 36

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

openssl rand 33000 -base64 -out dump.txt

5voto

Clement Points 51

Le package wamerican fournit un dictionnaire de mots disponibles sous /usr/share/dict/words.

Vous pouvez utiliser l'astuce suivante pour les utiliser :

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 ?)

4voto

Xen2050 Points 13136

base64 semble ne produire que des caractères alphanumériques ainsi que / et +.

J'aime cela pour obtenir plus de caractères de "ponctuation", comme

'[:punct:]'
  Caractères de ponctuation ; dans l'environnement 'C' et avec l'encodage ASCII, ce sont ! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \
  ] ^ _ ` { | } ~

Alors utilisez ceci :

'[:graph:]'
     Caractères graphiques : '[:alnum:]' et '[:punct:]'

et utilisez tr pour supprimer les guillemets simples ' les accents graves \` et les barres obliques \

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

l'option de taille -c pour head peut avoir un suffixe multiplicateur : b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024, GB 1000*1000*1000, G 1024*1024*1024, et ainsi de suite pour T, P, E, Z, Y.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X