Как я могу создать новый файл и заполнить его случайными данными на 1 гигабайт? Мне нужно это для тестирования некоторых программ.
Я бы предпочел использовать /dev/random
или /dev/urandom
.
Как я могу создать новый файл и заполнить его случайными данными на 1 гигабайт? Мне нужно это для тестирования некоторых программ.
Я бы предпочел использовать /dev/random
или /dev/urandom
.
Ответы:
На большинстве офисов:
head -c 1G </dev/urandom >myfile
Если вы head
не понимаете G
суффикс, вы можете указать размер в байтах:
head -c 1073741824 </dev/urandom >myfile
Если вы head
не понимаете эту -c
опцию (это обычное дело, но не POSIX; у вас, вероятно, есть OpenBSD):
dd bs=1024 count=1048576 </dev/urandom >myfile
Не используйте /dev/random
на Linux, используйте /dev/urandom
.
head
не понимает -c
на моей машине Solaris 10.
head
умеет читать /dev/urandom
, но tail
не умеет.
tail
сначала пытается перейти к концу входного файла, что занимает бесконечно (буквально).
/dev/zero
также есть, если вам не нравится разнообразие.
Предполагая, что псевдослучайных данных достаточно, dd if=/dev/urandom of=target-file bs=1M count=1000
будет делать то, что вы хотите.
dd (1) будет считывать блоки данных из входного файла и записывать их в выходной файл. Язык командной строки немного странный, но это один из тех действительно полезных инструментов, которые стоит освоить основам.
В данном случае if
это входной файл, of
это выходной файл, bs
это «размер блока» - и я использовал расширение GNU для более удобного задания размера. (Вы также можете использовать 1048576, если у вас dd
нет расширения GNU.) count
- это количество блоков для чтения if
и записи of
.
/dev/urandom
это лучший выбор, чем /dev/random
потому, что в Linux он будет прибегать к сильным псевдослучайным данным, а не блокироваться, когда истощаются подлинно случайные данные.
Вы также можете посмотреть на http://www.random.org/ как еще один способ получения случайных данных без необходимости их генерации самостоятельно.
1M
, доступны не в каждом стандартном dd
варианте. Если ваша версия dd
затронута, используйте bs=1048576
.
while true;do head /dev/urandom | tr -dc A-Za-z0-9;done | head -c 5000K | tee 5000kb
Используется для генерации 5 МБ случайных символов. Если вам нужен другой размер, измените -c
значение заголовка, измените имя выходного файла, выполните и дождитесь завершения выполнения.
vi
сvi -w randomfile
и попросите кого-то, кто никогда не видел,vi
чтобы выйти из программы. ;)