如何抑制 dd 输出?

die*_*rre 42 bash su sudo dd

我有一个 bash 脚本,它使用dd. 问题是 dd 会抛出大量输出,这些输出会干扰我的脚本输出。环顾四周,我找到了一个解决方案:

dd if=boot1h of="/dev/r$temp1" >& /dev/null
Run Code Online (Sandbox Code Playgroud)

有没有替代方法,或者重定向到/dev/null唯一的方法?

小智 75

添加status=none

dd if=boot1h of="/dev/r$temp1" status=none
Run Code Online (Sandbox Code Playgroud)

来自dd (coreutils) 8.21 文档

dd if=boot1h of="/dev/r$temp1" status=none
Run Code Online (Sandbox Code Playgroud)

  • 在 dd (coreutils) 8.13 中似乎不可用:```dd:无效状态标志:`none' 尝试使用 `dd --help' 了解更多信息。``` (3认同)
  • IMO 这应该是公认的答案 (3认同)
  • busybox 支持 `status=none` 吗?玩具盒怎么样?OpenBSD/FreeBSD 怎么样?索拉里斯怎么样?我知道对 `status=progress` 的支持差异很大 (3认同)

amp*_*ine 18

dd(1)手册页:

   status=noxfer
          suppress transfer statistics
Run Code Online (Sandbox Code Playgroud)

因此:

dd if=boot1h of="/dev/r$temp1" status=noxfer
Run Code Online (Sandbox Code Playgroud)

这仍然输出

0+1 records in
0+1 records out
Run Code Online (Sandbox Code Playgroud)

dd退出时垃圾,因此重定向到数据接收器确实是您唯一的选择。


小智 6

备查:

要抑制 dd 输出完全重定向 stderr 到 /dev/null 像这样:

dd if=/dev/urandom of=sample.txt bs=5MB count=1 2> /dev/null
Run Code Online (Sandbox Code Playgroud)

例如,如果您想在 bash 中使用 time 命令为进程计时并将结果分配给变量,而无需获得 dd 产生的任何输出,那么这非常有效。

参考:http : //www.unix.com/shell-programming-and-scripting/131624-how-suppress-dd-output.html