Answers:
if=
不是必需的,您可以通过管道将一些内容导入其中dd
:
something... | dd of=sample.txt bs=1G count=1
这在这里没有用,因为openssl rand
无论如何都需要指定字节数。因此,您实际上不需要dd
– 这可以工作:
openssl rand -out sample.txt -base64 $(( 2**30 * 3/4 ))
1 GB通常是2 30字节(尽管您可以使用10**9
10 9字节来代替)。该* 3/4
部分解决了Base64开销,使编码输出为1 GB。
或者,您可以使用/dev/urandom
,但是它会比OpenSSL慢一点:
dd if=/dev/urandom of=sample.txt bs=1G count=1
就个人而言,我会使用bs=64M count=16
或类似的方法:
dd if=/dev/urandom of=sample.txt bs=64M count=16
dd if=/dev/urandom bs=750M count=1 | uuencode my_sample > sample.txt
。
dd
读取750,000,000 字节/dev/urandom
并将其通过管道传输到uuencode
。 uuencode
将其输入编码为base64编码的形式(不一定与其他程序一致)。换句话说,这会将二进制数据转换为文本。我之所以使用750M,是因为我信任grawity的声明,即base64编码会将数据扩展33%,因此您需要在文本文件中索取3/4的二进制数据。
dd: warning: partial read (33554431 bytes); suggest iflag=fullblock
它将创建一个被截断的文件,那么添加该iflag=fullblock
标志,然后它就可以工作了。
创建一个1GB.bin随机内容文件:
dd if = / dev / urandom of = 1GB.bin bs = 64M count = 16 iflag = fullblock
iflag=fullblock
与其他答案相比是必要的补充。
试试这个脚本。
#!/bin/bash
openssl rand -base64 1000 | dd of=sample.txt bs=1G count=1
只要您不介意使用,此脚本就可以工作/dev/random
。
#!/bin/bash
dd if=/dev/random of="sample.txt bs=1G count=1"
/dev/random
除非有充分的理由,否则我不建议您浪费时间。/dev/urandom
便宜得多。
$var=(command)
在这种情况下不是有效的语法。
random=$(openssl rand -base64 1000)
。尽管我会质疑是否bash
允许您将一个千兆字节的值分配给变量。即使您说了random=$(openssl rand -base64 1000)
,后续if=$random
也没有道理。
/dev/urandom
生成二进制文件而不是真实文本文件。