Jak utworzyć losowy plik .txt (tekst czytelny dla człowieka, taki jak ascii) w systemie Linux

43

Muszę utworzyć plik tekstowy, który powinien zawierać losowe dane tekstowe, które mogą być odczytane przez człowieka. Wiem, że możemy wykorzystywać /dev/urandomi /dev/randomuzyskiwać losowe dane. Ale nie jest to czytelne dla ludzi. Muszę utworzyć plik zawierający losowy format tekstowy. Czy istnieje jakiś sposób, aby to zrobić?

Chinna
źródło
1
„Czytelne dla ludzi” jak w sensie faktycznym? Pełne zdania? A może tylko kilka słów ze słownika?
slhck
W zależności od definicji „losowego” i tego, co próbujesz osiągnąć, istnieje wiele generatorów Lorem Ipsum dostępnych w Linuksie lub dostępnych z Linuksa, często do pobrania z repozytorium twojej dystrybucji. Zobacz Czy istnieje coś takiego jak generator lorem ipsum? , Offline lorem ipsum generator , aur.archlinux.org/packages/lorem-ipsum-generator itp.
fixer1234

Odpowiedzi:

93

Możemy to zrobić, wykonując polecenie

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

Tworzy plik o nazwie file.txt o rozmiarze 10 MB.

Chinna
źródło
1
To wspaniałe, dodaje także nowy wiersz co 76 znaków.
wisbucky
15

uzyskać wynik:

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

i potokuj go do pliku.

Możesz użyć polecenia head z -c lub -n, aby ograniczyć rozmiar pliku

przykład do wygenerowania pliku 1kB a.txt:

tr -dc A-Za-z0-9 </dev/urandom | head -c 1024 > a.txt
użytkownik1403360
źródło
Możesz także użyć [:alnum:]zamiast A-Za-z0-9. Ponadto, jeśli chcesz tr -dc '[:alnum:] \n' ...
spryskać
4

base64wydaje się, że wypisuje tylko znaki alfanumeryczne plus /i +.

Lubię to, aby uzyskać więcej znaków „interpunkcyjnych”

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

Więc użyj tego:

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

i użyj, traby usunąć cudzysłowy 'backticks' i backslashes \

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

-copcja o rozmiarach headmoże mieć sufiks mnożnika: b 512, KB 1000 K 1024, MB 1000 * 1000 K 1024 * 1024, GB 1000 * 1000 * 1000, G 1024 * 1024 * 1024, i tak dalej do T, P , E, Z, Y.

Xen2050
źródło
3

Jeśli nie masz / dev / urandom (ponieważ być może używasz konsoli GitBash), możesz użyć:

openssl rand 33000 -base64 -out dump.txt
ciasto
źródło
3

Jeśli chcesz trzymać się prawdziwych słów ze słownika, użyj tej sztuczki:

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

Pamiętaj, że nie określasz geometrii (ile słów na linię, ile linii?)

Łaskawy
źródło