Wie erstelle ich eine zufällige .txt-Datei (menschenlesbarer Text wie ASCII) unter Linux?


43

Ich muss eine Textdatei erstellen, die zufällige Textdaten enthalten soll, die von Menschen gelesen werden können. Ich weiß, dass wir zufällige Daten verwenden /dev/urandomund /dev/randomerhalten können. Aber es ist für Menschen nicht lesbar. Ich muss eine Datei erstellen, die ein zufälliges Textformat enthält. Gibt es eine Möglichkeit, das zu tun?


1
"Für Menschen lesbar", wie es Sinn macht? Ganze Sätze? Oder nur ein paar Wörter aus dem Wörterbuch?
Slhck

Abhängig von der Definition von "zufällig" und dem, was Sie erreichen möchten, gibt es eine Reihe von Lorem Ipsum-Generatoren, die unter Linux verfügbar oder verfügbar sind und häufig aus dem Repository Ihrer Distribution heruntergeladen werden können. Siehe Gibt es so etwas wie einen Lorem-Ipsum-Generator? , Offline lorem ipsum generator , aur.archlinux.org/packages/lorem-ipsum-generator , etc.
fixer1234

Antworten:


93

Wir können es tun, indem wir dem Befehl folgen

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

Es wird eine Datei mit dem Namen file.txt mit einer Größe von 10 MB erstellt.


1
Dadurch wird auch alle 76 Zeichen eine neue Zeile eingefügt.
wisbucky

15

Erhalte die Ausgabe von:

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

und leite es zu einer Datei.

Sie können den Befehl head mit -c oder -n verwenden, um die Dateigröße zu begrenzen

Beispiel zum Erzeugen einer 1kB-Datei a.txt:

tr -dc A-Za-z0-9 </dev/urandom | head -c 1024 > a.txt

Sie können auch [:alnum:]anstelle von verwenden A-Za-z0-9. Wenn Sie Leerzeichen und Zeilenumbrüche verwenden möchten, können Sie diese Variante tr -dc '[:alnum:] \n' ...
ausführen

4

base64scheint nur alphanumerische Zeichen plus /und auszugeben +.

Ich mag dies, um mehr "Interpunktions" -Zeichen zu erhalten, wie

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

Also benutze dies:

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

und verwenden tr, um einfache Anführungszeichen "Backticks" und Backslashes zu entfernen \

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

Die -cGrößenoption headkann ein Multiplikatorsuffix haben: b 512, kB 1000, K 1024, MB 1000 * 1000, M 1024 * 1024, GB 1000 * 1000 * 1000, G 1024 * 1024 * 1024 usw. für T, P E, Z, Y.


3

Wenn Sie nicht über / dev / urandom verfügen (weil Sie möglicherweise eine GitBash-Konsole verwenden), können Sie Folgendes verwenden:

openssl rand 33000 -base64 -out dump.txt

3

Wenn Sie sich an echte Wörter halten möchten, verwenden Sie diesen Trick:

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

Beachten Sie, dass Sie die Geometrie nicht angeben (wie viele Wörter pro Zeile, wie viele Zeilen?)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.