# dd if=2013-Aug-uptime.csv bs=1 count=1 skip=3 2> /dev/null
d
# dd if=2013-Aug-uptime.csv bs=1 count=1 skip=0x3 2> /dev/null
f
Run Code Online (Sandbox Code Playgroud)
为什么第二个命令输出不同的值?
是否可以将 skip|seek 偏移量dd
作为十六进制值传递?
ric*_*ici 23
为什么第二个命令输出不同的值?
由于历史原因,dd
被认为x
是乘法运算符。所以0x3
被评估为0。
是否可以将 skip|seek 偏移量作为十六进制值传递给 dd?
据我所知,不是直接的。除了使用 operator 进行乘法之外x
,您还可以为任何数字添加后缀b
以表示“乘以 512”(0x200)和K
表示“乘以 1024”(0x400)。与GNU DD也可以使用后缀M
,G
,T
,P
,E
,Z
和Y
对乘以2的意思是20的分别的功率,30%,40%,50,60,70,80或90,并且可以上使用或小写除为b
后缀。(还有许多其他可能的后缀。例如,EB
表示“乘以 10 18 ”和PiB
表示“乘以 2 50 ”。info coreutils "block size"
如果您安装了 GNU,请参阅了解更多信息。)
您可能会发现上述内容晦涩、不合时宜且令人讨厌到荒谬的地步。不用担心:您并不孤单。幸运的是,您可以将其全部忽略并改用 shell 的算术替换(bash 和其他符合 Posix 的 shell 以及一些非 Posix shell 都可以使用)。shell 确实理解十六进制数,并且它允许以正常方式编写的全范围算术运算符。您只需要用以下内容包围表达式$((...))
:
# dd if=2013-Aug-uptime.csv bs=1 count=$((0x2B * 1024)) skip=$((0x37))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
17883 次 |
最近记录: |