Для чего это стоит, headне понимает -cна моей машине Solaris 10.
Рахму
2
Интересно, что headумеет читать /dev/urandom, но tailне умеет.
Стефан Ласевский
22
@StefanLasiewski tailсначала пытается перейти к концу входного файла, что занимает бесконечно (буквально).
Жиль
Ах, как «tail / dev / infinity», если бы было такое устройство.
Стефан Ласевский
3
@StefanLasiewski У вас /dev/zeroтакже есть, если вам не нравится разнообразие.
Жиль
35
Предполагая, что псевдослучайных данных достаточно, 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.
Крис Даун
4
В примере команда создаст файл из 1 000 000 блоков размером 1 МБ каждый. Это примерно 1 ТБ (1 М х 1 МБ), а не 1 ГБ (что будет 1 КБ 1 МБ). Кроме того, вплоть до определенного момента увеличение размера блока и уменьшение количества блоков приводит к большей пропускной способности для данного объема выходных данных.
CVn
2
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
чтобы выйти из программы. ;)Ответы:
На большинстве офисов:
Если вы
head
не понимаетеG
суффикс, вы можете указать размер в байтах:Если вы
head
не понимаете эту-c
опцию (это обычное дело, но не POSIX; у вас, вероятно, есть OpenBSD):Не используйте
/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
.Используется для генерации 5 МБ случайных символов. Если вам нужен другой размер, измените
-c
значение заголовка, измените имя выходного файла, выполните и дождитесь завершения выполнения.источник