ファイルにランダムデータを入力するにはどうすればよいですか?


124

新しいファイルを作成して、1ギガバイト相当のランダムデータを入力するにはどうすればよいですか?いくつかのソフトウェアをテストするためにこれが必要です。

/dev/randomまたはを使用したいと思います/dev/urandom


74
開いviて、プログラムを終了するようにvi -w randomfileviたことがない人に尋ねます。;)
ワイルドカード

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/randomLinuxでは使用しないでください/dev/urandom


1
私のSolaris 10マシンでheadは、その価値は理解できません-c
ラーム

2
head読むことはできますが/dev/urandom、読むtailことはできません。
ステファンLasiewski

22
@StefanLasiewskiはtail最初に入力ファイルの末尾に移動しようとしますが、これには(文字通り)時間がかかります。
ジル

ああ、そのようなデバイスがあれば、「tail / dev / infinity」のように。
ステファンLasiewski

3
@StefanLasiewski /dev/zeroバラエティーが気に入らなければあなたも持っています。
ジル

35

擬似乱数データで十分であるdd if=/dev/urandom of=target-file bs=1M count=1000と仮定すると、あなたが望むことをします。

dd(1)は、入力ファイルからデータのブロックを読み取り、出力ファイルに書き込みます。コマンドライン言語は少し風変わりですが、基本をマスターする価値のある本当に便利なツールの1つです。

この場合if、入力ファイルでofあり、出力ファイルでbsあり、「ブロックサイズ」です-そして、GNU拡張を使用してサイズをより便利に設定しました。(ddGNU拡張機能がない場合は、1048576も使用できます。) countは、読み取りifおよび書き込みを行うブロックの数ですof

/dev/urandom/dev/randomLinuxでは、真にランダムなデータが使い果たされたときにブロックするのではなく、強力な擬似ランダムデータにフォールバックするため、より良い選択です。

また、http://www.random.org/を、自分で生成せずにランダムデータを取得する別の方法として見ることもできます。


3
注- 1Mすべての標準ddバリアントでは、ユニットの仕様は利用できません。のバージョンddが影響を受ける場合は、を使用しますbs=1048576
クリスダウン

4
このコマンド例では、サイズがそれぞれ1 MBのcount 1,000,000ブロックのファイルを作成します。これは約1 TB(1K x 1MB)ではなく、約1 TB(1M x 1MB)です。余談ですが、ある程度までは、ブロックサイズを増やしてブロック数を減らすと、一定量の出力データのスループットが向上する傾向があります。
CVn

2
while true;do head /dev/urandom | tr -dc A-Za-z0-9;done | head -c 5000K | tee  5000kb

これを使用して、5MBのランダムな文字データを生成しました。異なるサイズが必要な-c場合は、head の値を変更し、出力ファイル名を変更し、実行して、実行が完了するまで待ちます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.