1

我经常会使用类似的技巧创建一个特定大小的文件

dd if=/dev/zero of=1gb.dd bs=1M count=1024

或者甚至

dd if=/dev/urandom of=1gb.dd bs=1M count=1024
dd if=/dev/random of=1gb.dd bs=1M count=1024

但是如果我想得到所有的 1 而不是 0 或随机的呢?

4

3 回答 3

2

对于随机数据,几乎在所有情况下都使用/dev/urandom. (您也可以使用/dev/random,但这要慢得多,因为它是熵绑定的。urandom是一个 PRNG,它从 自我种子random。)

对于非零文件,我建议如下:

perl -e 'print chr(0xff) x 1000' > t

显然,自定义 0xff 和 1000 来品尝。

于 2010-06-04T19:30:23.050 回答
1

这大约需要 4 倍的时间,但只比crazyscot 的回答dd if=/dev/zero中的 Perl 命令稍长一点:

touch shred.out; yes $'\xff' | tr -d $'\n' | shred --random-source=/dev/stdin --size=1G --iterations=1 shred.out

有趣的是,这个类似的命令在达到 1 GB 之前就停止了:

yes $'\xff' | tr -d $'\n' | dd if=/dev/stdin of=1gb.dd bs=1M count=1024
于 2010-06-04T21:44:57.783 回答
-2

在 dd 之后添加另一个命令。

sed 's/0/1/g' file.txt

它将用 1 替换所有 0。

可能是一个更好的解决方案,但这应该工作:-)

编辑:您实际上必须将结果通过管道传输到新文件或替换同一文件。sed 默认打印到屏幕 (IIRC)

于 2010-06-04T19:23:53.580 回答