Как я могу создать новый файл и заполнить его случайными данными на 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чтобы выйти из программы. ;)