我有一个 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
'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这只是我跑的一个例子......