Ich benutze die Bash-Shell und möchte das aus dem Befehl openssl rand -base64 1000
zum Befehl dd
wie leiten dd if={output of openssl} of="sample.txt bs=1G count=1
. Ich glaube, ich kann Variablen verwenden, bin mir aber nicht sicher, wie ich das am besten machen soll. Der Grund, warum ich die Datei erstellen möchte, ist, dass ich eine 1-GB-Datei mit zufälligem Text haben möchte.
88
/dev/urandom
erzeugt eine binäre Datei und nicht um eine echte Textdatei.dd if=/dev/urandom bs=750M count=1 | uuencode my_sample > sample.txt
.dd
liest 750.000.000 Bytes aus/dev/urandom
und leitet sie weiteruuencode
.uuencode
codiert seine Eingabe in eine Form von Base64-Codierung (nicht unbedingt konsistent mit anderen Programmen). Mit anderen Worten konvertiert dies Binärdaten in Text. Ich habe 750M verwendet, weil ich der Aussage von grawity vertraute, dass die Base64-Codierung die Daten um 33⅓% vergrößert. Sie müssen also nach ¾ so vielen Binärdaten fragen, wie Sie in Ihrer Textdatei möchten.dd: warning: partial read (33554431 bytes); suggest iflag=fullblock
wird, dass eine abgeschnittene Datei erstellt wird. Fügen Sie also dasiflag=fullblock
Flag hinzu.Erstellen Sie eine zufällige 1GB.bin-Inhaltsdatei:
quelle
iflag=fullblock
war die notwendige Ergänzung vergleichbar mit anderen Antworten.Wenn Sie GENAU 1 GB möchten, können Sie Folgendes verwenden:
openssl rand -out $ testfile -base64 792917038; schneide -s-1 $ testdatei ab
Mit dem Befehl openssl wird eine Datei genau 1 Byte zu groß. Der Befehl "Truncate" schneidet dieses Byte ab.
quelle
-base64
. Wenn Sie es entfernen, wird eine Datei mit der richtigen Größe erstellt.Versuchen Sie dieses Skript.
Dieses Skript funktioniert möglicherweise so lange, wie es Ihnen nichts ausmacht
/dev/random
.quelle
/dev/random
es sei denn, es gibt einen sehr guten Grund dafür./dev/urandom
ist viel billiger.$var=(command)
ist nicht gültig Syntax in diesem Zusammenhang.random=$(openssl rand -base64 1000)
. Obwohl ich fragen würde, obbash
Sie einer Variablen einen Gigabyte langen Wert zuweisen können. Und selbst wenn Sie sagenrandom=$(openssl rand -base64 1000)
, macht das Nachfolgendeif=$random
keinen Sinn.