J'utilise le shell bash et aimerais diriger la sortie de la commande openssl rand -base64 1000
vers la commande dd
telle que dd if={output of openssl} of="sample.txt bs=1G count=1
. Je pense que je peux utiliser des variables mais je ne suis cependant pas sûr de la meilleure façon de le faire. La raison pour laquelle je voudrais créer le fichier est parce que je voudrais un fichier de 1 Go avec du texte aléatoire.
89
/dev/urandom
génère un fichier binaire et non un fichier texte.dd if=/dev/urandom bs=750M count=1 | uuencode my_sample > sample.txt
.dd
lecteur lit 750 000 000 octets/dev/urandom
et les transfère dansuuencode
.uuencode
code son entrée dans une forme d’encodage base64 (pas nécessairement compatible avec d’autres programmes). En d'autres termes, cela convertit les données binaires en texte. J'ai utilisé 750M parce que je me fie à l'affirmation de grawity selon laquelle le codage en base64 dilate les données de 33⅓%, vous devez donc demander autant de données binaires que vous le souhaitez dans votre fichier texte.dd: warning: partial read (33554431 bytes); suggest iflag=fullblock
cela créera un fichier tronqué , ajoutez donc leiflag=fullblock
drapeau, cela fonctionneraCréez un fichier de contenu aléatoire de 1GB.bin:
la source
iflag=fullblock
était l'addition nécessaire par rapport à d'autres réponses.Si vous voulez EXACTEMENT 1 Go, vous pouvez utiliser les éléments suivants:
openssl rand -out $ testfile -base64 792917038; tronquer -s-1 $ testfile
La commande openssl rend un fichier exactement 1 octet trop grand. La commande tronquer supprime cet octet.
la source
-base64
. Si vous le supprimez, vous obtiendrez un fichier de taille correcte.Essayez ce script.
Ce script peut fonctionner aussi longtemps que cela ne vous dérange pas d'utiliser
/dev/random
.la source
/dev/random
cela à moins qu'il y ait une très bonne raison de le faire./dev/urandom
est beaucoup moins cher.$var=(command)
syntaxe n'est pas valide dans ce contexte.random=$(openssl rand -base64 1000)
. Bien que je me demande sibash
vous pourriez attribuer une valeur d'un gigaoctet à une variable. Et même si vous ditesrandom=$(openssl rand -base64 1000)
, la suiteif=$random
n'a pas de sens.