Korzystam z powłoki bash i chciałbym wyprowadzić z polecenia openssl rand -base64 1000
polecenie dd
takie jak dd if={output of openssl} of="sample.txt bs=1G count=1
. Myślę, że mogę używać zmiennych, ale nie jestem pewien, jak najlepiej to zrobić. Powodem, dla którego chciałbym utworzyć plik, jest to, że chciałbym mieć plik 1 GB z losowym tekstem.
88
/dev/urandom
generuje plik binarny, a nie prawdziwy plik tekstowy.dd if=/dev/urandom bs=750M count=1 | uuencode my_sample > sample.txt
.dd
odczytuje 750 000 000 bajtów/dev/urandom
i wpuszcza jeuuencode
.uuencode
koduje dane wejściowe do postaci kodowania base64 (niekoniecznie spójne z innymi programami). Innymi słowy, konwertuje to dane binarne na tekst. Użyłem 750M, ponieważ zaufałem stwierdzeniu grawity, że kodowanie base64 rozszerza dane o 33⅓%, więc musisz poprosić o ¾ tyle danych binarnych, ile chcesz w pliku tekstowym.dd: warning: partial read (33554431 bytes); suggest iflag=fullblock
że utworzy plik obcięty, więc dodajiflag=fullblock
flagę, to działa.Utwórz losowy plik zawartości 1GB.bin:
źródło
iflag=fullblock
było to konieczne uzupełnienie w porównaniu z innymi odpowiedziami.Jeśli chcesz DOKŁADNIE 1 GB, możesz użyć następujących opcji:
openssl rand -out $ plik-testowy -base64 792917038; truncate -s-1 $ plik testowy
Komenda openssl powoduje, że plik ma dokładnie 1 bajt za duży. Polecenie obcięcia powoduje przycięcie tego bajtu.
źródło
-base64
. Usunięcie go spowoduje utworzenie pliku o odpowiednim rozmiarze.Wypróbuj ten skrypt.
Ten skrypt może działać, o ile nie masz nic przeciwko użyciu
/dev/random
.źródło
/dev/random
na to pieniędzy, chyba że istnieje ku temu dobry powód./dev/urandom
jest znacznie tańszy.$var=(command)
nie jest poprawna składnia w tym kontekście.random=$(openssl rand -base64 1000)
. Chociaż chciałbym zapytać, czybash
pozwoliłbyś przypisać do zmiennej wartość o długości gigabajtów. I nawet jeśli tak mówiszrandom=$(openssl rand -base64 1000)
, kolejneif=$random
nie mają sensu.