Як я можу заповнити файл випадковими даними?


124

Як я можу створити новий файл і заповнити його випадковими даними на 1 гігабайт? Мені це потрібно для тестування деякого програмного забезпечення.

Я б волів використовувати /dev/randomабо /dev/urandom.


74
Відкрити viз vi -w randomfileі попросити кого - то , хто ніколи не бачив , viщоб вийти з програми. ;)
Wildcard

1
Просто сподобався вище коментар з поста у Facebook! facebook.com/ProgrammersCreateLife/photos/a.241809332534619/…
Parixit

Відповіді:


171

На більшості уніцій:

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.


1
Чого вона варта, headне розуміє -cна моїй машині Solaris 10.
rahmu

2
Цікаво, що headможна читати /dev/urandom, але tailне вміє.
Стефан Ласєвський

21
@StefanLasiewski tailспочатку намагається перейти до кінця вхідного файлу, який займає назавжди (буквально).
Жиль

Так, як "хвіст / дев / нескінченність", якби такий пристрій був.
Стефан Ласєвський

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/randombecuase, в Linux він повернеться до сильних псевдовипадкових даних, а не блокується, коли справді випадкові дані будуть вичерпані.

Ви також можете розглянути http://www.random.org/ як інший шлях до отримання деяких випадкових даних без необхідності їх генерування.


3
Примітка - технічні характеристики на зразок 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значення заголовка, змініть назву поточного файлу, виконайте і почекайте, поки виконання завершиться.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.