J'utilise le shell bash et j'aimerais échapper à la commande openssl rand -base64 1000
à la commande dd
comme dd if={output of openssl} of="sample.txt bs=1G count=1
Je pense Je peux utiliser des variables, mais je suis cependant incertain sur 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.
if=
n'est pas nécessaire, vous pouvez envoyer quelque chose à dd
place:
something... | dd of=sample.txt bs=1G count=1
Il ne serait pas utile ici car openssl rand
nécessite de spécifier le nombre d'octets de toute façon. Donc, vous n'avez pas besoin de dd
– cela fonctionnerait:
openssl rand -out sample.txt -base64 $(( 2**30 * 3/4 ))
1 gigabyte est généralement de 2 30 octets (bien que vous puissiez utiliser 10**9
pour 10 9 octets à la place). La partie * 3/4
regroupe les frais généraux de Base64, ce qui rend la sortie codée de 1 Go.
Alternativement, vous pouvez utiliser /dev/urandom
, mais ce serait un peu plus lent que OpenSSL:
dd if=/dev/urandom of=sample.txt bs=1G count=1
Personnellement, j'utiliserais bs=64M count=16
ou similaire:
dd if=/dev/urandom of=sample.txt bs=64M count=16
Créez un fichier de contenu aléatoire de 1 Go.bin:
Dd if = / dev / urandom de = 1GB.bin bs = 64M count = 16 iflag = fullblock
Essayez ce script.
#!/bin/bash openssl rand -base64 1000 | dd of=sample.txt bs=1G count=1
Ce script peut fonctionner aussi longtemps que cela ne vous dérange pas d'utiliser /dev/random
.
#!/bin/bash dd if=/dev/random of="sample.txt bs=1G count=1"
Si vous souhaitez EXACTEMENT 1 Go, vous pouvez utiliser ce qui suit:
Openssl rand -out $ testfile -base64 792917038; Truncate -s-1 $ testfile
La commande openssl rend un fichier exactement 1 octet trop grand. La commande tronquée coupe ce décalage.