如何抑制 dd 输出?

如何抑制 dd 输出?

我有一个 bash 脚本,它使用dd.问题是 dd 抛出大量输出,这会扰乱我的脚本的输出。搜索周围我找到了解决方案:

dd if=boot1h of="/dev/r$temp1" >& /dev/null

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

答案1

添加status=none

dd if=boot1h of="/dev/r$temp1" status=none

来自dd (coreutils) 8.21 文档:

'status=LEVEL'
     Transfer information is normally output to stderr upon receipt of
     the 'INFO' signal or when 'dd' exits.  Specifying LEVEL will adjust
     the amount of information printed, with the last LEVEL specified
     taking precedence.

     'none'
          Do not print any informational or warning messages to stderr.
          Error messages are output as normal.

     'noxfer'
          Do not print the final transfer rate and volume statistics
          that normally make up the last status line.

     'progress'
          Print the transfer rate and volume statistics on stderr, when
          processing each input block.  Statistics are output on a
          single line at most once every second, but updates can be
          delayed when waiting on I/O.

答案2

dd(1)手册页:

   status=noxfer
          suppress transfer statistics

因此:

dd if=boot1h of="/dev/r$temp1" status=noxfer

这仍然输出

0+1 records in
0+1 records out

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

答案3

备查:

要抑制 dd 输出,请将 stderr 完全重定向到 /dev/null,如下所示:

dd if=/dev/urandom of=sample.txt bs=5MB count=1 2> /dev/null

例如,如果您想使用 bash 中的 time 命令对进程进行计时并将结果分配给变量,而不获取 dd 产生的任何输出,那么这会很好地工作。

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

答案4

像这样的东西也应该适用于最新版本的 BASH 和 ZSH:

dd if=/path/to/file of=/path/to/another_file bs=1M count=1 &> /dev/null

PS这只是我跑的一个例子......

相关内容