我有一个bash脚本,可使用创建一些文件dd
。问题是dd抛出了大量的输出,这将使我的脚本的输出混乱。经过搜索,我找到了解决方案:
dd if=boot1h of="/dev/r$temp1" >& /dev/null
是否有替代方法,或者重定向到/dev/null
唯一方法?
cat
,head
或tail
代替。
我有一个bash脚本,可使用创建一些文件dd
。问题是dd抛出了大量的输出,这将使我的脚本的输出混乱。经过搜索,我找到了解决方案:
dd if=boot1h of="/dev/r$temp1" >& /dev/null
是否有替代方法,或者重定向到/dev/null
唯一方法?
cat
,head
或tail
代替。
Answers:
添加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.
info page
;这里最初的回答有确切的报价从man page
。info
如果man
页面模棱两可,我会直接从页面复制/粘贴,但实际上取决于您...哦,顺便说一句,非常感谢您对我的其他答复,有关按星期排序的评论。
dd
没有status=
)
dd: invalid status flag: `none' Try `dd --help' for more information.
备查:
要取消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
使用任何Unix应用程序或命令,您都可以使用
cmd >/dev/null 2>&1
第一位将标准输出(单元号1)重定向到/ dev / null。但是您需要第二部分还必须将错误输出(单元号2)重定向到与数字1相同的位置。
在UNIX中,STDIN = 0,STDOUT = 1和STDERR = 2
stderr
具有文件描述符2。(我假设“ STDERR = 3”只是一个错字。)
cmd 2>logfile.txt
似乎更适应
如果我正确理解您要执行的操作,您是否将该sudo
命令放入脚本中并期望脚本在该脚本中运行时提示您输入密码?在这种情况下,您只是在以复杂的方式处理事务。
较干净的解决方案是以通常的方式编写脚本(即,不编写脚本sudo
),然后以超级用户身份运行它。这背后的原因是,如果脚本需要超级用户访问权限,则只需为其提供访问权限(为什么要等到特定命令?)。在脚本中,要检查它是否以root身份运行,请执行以下操作:
if [ "$(id -u)" != "0" ]; then
echo "This script must be run as root" 1>&2
exit 1
fi
sudo
?普通用户应该能够将事情重定向到/dev/null
正常状态。
/dev/null
-您正在s嘘,因为dd
需要对/dev/r$temp1
(我假设)具有写权限。无论您如何抑制dd
的输出,都需要这样做。将输出重定向到/dev/null
不需要根