有些版本的dd不能理解乘法后缀吗?

时间:2016-01-07 11:19:02

标签: linux dd suffix

我想知道是否有某些版本的dd不了解乘法后缀。从dd手册页面上可以看出:

bs=BYTES
    read and write BYTES bytes at a time (also see ibs=,obs=) 
BLOCKS and BYTES may be followed by the following multiplicative suffixes: c =1, w =2, b =512, kB =1000, K =1024, MB =1000*1000, M =1024*1024, xM =M GB =1000*1000*1000, G =1024*1024*1024, and so on for T, P, E, Z, Y.

但是当我在bs参数上运行带有G后缀的dd时,我得到了一个关于数字未被理解的错误:

bash $ dd if=/dev/urandom of=largeMovie.avi count=1024 bs=75G
dd: invalid number `75G'

dd的版本如下:

bash $ dd --version
dd (coreutils) 5.97

A

2 个答案:

答案 0 :(得分:1)

G不是标准后缀。因此行为未定义。

唯一的标准后缀是k(1024)和b(512)。如果您还需要其他任何内容,可以在带有后缀的多个数字之间使用x来乘以:

dd bs=1024 count=75x1024x1024x1024

(您的示例尝试分配75GiB的RAM很少,所以我切换了bscount

以下是POSIX所说的内容:

  

对于bs =,cbs =,ibs =和obs =操作数,应用程序应提供一个指定大小(以字节为单位)的表达式。表达式expr可以是:

     

正十进制数

     

正十进制数后跟k,指定乘以1024

     

正十进制数后跟b,指定乘以512

     

由x分隔的两个或多个正十进制数(带或不带k或b),指定指示值的乘积

答案 1 :(得分:0)

我认为你是32位且75G大于size_t。 即使在64位上,你也至少需要那些可用的mem,因为dd会分配一个bs指定大小的缓冲区。